运维之k8s集群搭建
admin
2023-04-07 02:01:18
0次

用kubeadm部署K8s群集

前提摘要:
        1、各节点时间同步; 
        2、各节点主机名称解析:dns OR hosts 3 /etc/hosts
        3、各节点iptables及firewalld服务被disable

1:master(192.168.1.179) 组件:

https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/

配置yum仓库导入docker 下载docker-ce.repo
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

cd /etc/yum.repos.d/
vim k8s.repo   #配置kubetnetes仓库
[k8s]
name=K8s Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1

yum repolist 查看两个仓库是否能用
安装docker-ce kubelet kubeadm kubectl
yum install docker-ce kubelet kubeadm kubectl -y 
如果有报错 手动下载密钥执行下面命令
wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
rpm --import yum-key.gpg
初始化docker启动docker服务
 systemctl daemon-reload #重新加载文件
 systemctl start docker.service  #启动docker
 systemctl enable docker.service  #设置开机自启动
 systemctl enable kubelet.service 

 docker需要自动到docker仓库去下载镜像或者通过本地仓库下载所依赖的每个镜像文件
 1、通过docker自动下载依赖镜像
 cd /usr/lib/systemd/system/docker.service
 在 # for containers run by docker  底下加入环境变量
 Environment="HTTPS_PROXY=http://www.ik8s.io:10080" 通过代理去访问需要加载的镜像文件
 Environment="NO_PROXY=127.0.0.0/8,172.20.0.0/16"
 2、手动下载依赖镜像用
 kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.13.1
k8s.gcr.io/kube-controller-manager:v1.13.1
k8s.gcr.io/kube-scheduler:v1.13.1
k8s.gcr.io/kube-proxy:v1.13.1
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.2.24
k8s.gcr.io/coredns:1.2.6

下载命令
docker pull docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.1       下载镜像
docker tag docker.io/mirrorgooglecontainers/kube-apiserver:v1.13.1 k8s.gcr.io/kube-apiserver:v1.13.1         给镜像打标签

docker pull docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.1
docker tag docker.io/mirrorgooglecontainers/kube-controller-manager:v1.13.1 k8s.gcr.io/kube-controller-manager:v1.13.1

docker pull docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.1
docker tag docker.io/mirrorgooglecontainers/kube-scheduler:v1.13.1 k8s.gcr.io/kube-scheduler:v1.13.1

docker pull docker.io/mirrorgooglecontainers/kube-proxy:v1.13.1
docker tag docker.io/mirrorgooglecontainers/kube-proxy:v1.13.1 k8s.gcr.io/kube-proxy:v1.13.1

docker pull docker.io/mirrorgooglecontainers/pause:3.1
docker tag docker.io/mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1

docker pull docker.io/mirrorgooglecontainers/etcd:3.2.24
docker tag docker.io/mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24

docker pull docker.io/coredns/coredns:1.2.6
docker tag docker.io/coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
----------------------------------------------------------------------------- 
初始化kubelet
编辑kubelet的配置文件/etc/sysconfig/kubelet,设置其忽略Swap启用的状态错误,内容如下:
 KUBELET_EXTRA_ARGS="--fail-swap-on=false"

 设置kubelet开机自启动
 systemctl enable kubelet.service

 初始化

 kubeadm init --kubernetes-version=v1.13.1 --pod-network-cidr=192.168.0.0/6 --service.cidr=192.168.1.0/12 --ignore-preflight-errors=Swap

 --kubernetes-version=v1.11.1     #被初始化的k8s版本
 --pod-network-cidr=10.244.0.0/16 #pod使用的网络
 --service.cidr=10.96.0.0/12      #service使用的网络地址
 --ignore-preflight-errors=Swap   #双重否定部属用用交换配置

 如果在初始化过程中有error报错那么就查看是什么错误一般会报错镜像tag标签错误找不到该镜像  可以把镜像重新打标签

当如果看到下列内容则表示初始化成功

Your Kubernetes master has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

  mkdir ~/.kube          #创建.kube文件一般会提示用普通用户创建要有sudo权限这边我直接用root用户创建
  sudo cp /etc/kubernetes/admin.conf ~/.kube/ #复制admin.conf到./kube文件中
  sudo chown $(id -u):$(id -g) $HOME/.kube/config #把./kube的属组属主改为创建用户的属组属主
You should now deploy a pod network to the cluster.

Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of machines by running the following on each node
as root:

#用下列命令把node加入集群中来(建议把下列命令保存起来)
  kubeadm join 192.168.1.179:6443 --token 5m7gg1.czd5td6itn9g2fhz --discovery-token-ca-cert-hash sha256:50c64cac88defae6beecf7bdde9b212094d7cc937b709b94f0baaeaaa4246e7e

用root用户创建:
mkdir ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/
因为应root用户创建的就不用重新指定属组属主

kubectl get cs   #查看组件健康状态
kubectl get nodes #查看个节点信息
NAME     STATUS   ROLES    AGE   VERSION
master   NotReady    master   19h   v1.13.1   #这边显示未开启状态因为这边少一个flannel插件

安装flannel插件
https://github.com/coreos/flannel #flannel地址和帮助信息
图片

#如果你要受用安装就执行下面的命令就会自动执行安装
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

#部署完之后再查看节点信息
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   19h   v1.13.1

#查看组件状态信息(当前master运行的所有pod组件)
kubectl get pods -n kube-system
NAME                             READY   STATUS    RESTARTS   AGE
coredns-86c58d9df4-4frfz         1/1     Running   0          19h
coredns-86c58d9df4-hlr72         1/1     Running   0          19h
etcd-master                      1/1     Running   0          19h
kube-apiserver-master            1/1     Running   0          19h
kube-controller-manager-master   1/1     Running   0          19h
kube-flannel-ds-amd64-4c7jx      1/1     Running   0          19h
kube-flannel-ds-amd64-89m8l      1/1     Running   0          17h
kube-flannel-ds-amd64-rmxj9      1/1     Running   0          19h
kube-proxy-8pnqs                 1/1     Running   0          17h
kube-proxy-b4hlj                 1/1     Running   0          19h
kube-proxy-fzp2m                 1/1     Running   0          19h
kube-scheduler-master            1/1     Running   0          19h

#默认如果不指定名名称空间则名称空间kube-system
kubectl get ns
NAME          STATUS   AGE
default       Active   19h
kube-public   Active   19h
kube-system   Active   19h

#主节点初始化完成

node01 安装初始化

如果用第一种方法让docker自动下载依赖镜像则复制master中docker.service文件到node01中
把master中的k8s.repo和下载的docker-ce的yum仓库配置起来如果在yum过程中有报错则按照master中的方法执行

yum install docker-ce kubelet kubeadm -y
1、开启docker服务
2、把docker 、 kubelet设置开机自启动

 systemctl start docker.service  #启动docker
 systemctl enable docker.service  #设置开机自启动
 systemctl enable kubelet.service 

手动下载
kube-proxy 、 pause 镜像并打标签通master中的下载镜像配置

把node01节点加入集群中去
用刚刚保存的kubeadm job命令
kubeadm join 192.168.1.179:6443 --token 5m7gg1.czd5td6itn9g2fhz --discovery-token-ca-cert-hash sha256:50c64cac88defae6beecf7bdde9b212094d7cc937b709b94f0baaeaaa4246e7e --ignore-preflight-errors=Swap #后面加入这句话
再主节点上kubectl get nodes 查看系欸但有没有加入进来
kubectl get nodes
NAME     STATUS   ROLES    AGE   VERSION
master   Ready    master   20h   v1.13.1
node01   Ready       19h   v1.13.1 #已经加入进来了

# node02跟node01做同样步骤加入集群

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...