部署規(guī)劃
192.168.65.11 k8s-master
192.168.65.12 k8s-node1
192.168.65.13 k8s-node2
備注:第1步~第8步沛慢,所有的節(jié)點(diǎn)都要操作,第9达布、10步Master節(jié)點(diǎn)操作团甲,第11步Node節(jié)點(diǎn)操作。 如果第9往枣、10伐庭、11步操作失敗,可以通過 kubeadm reset 命令來清理環(huán)境重新安裝分冈。
1.關(guān)閉防火墻
$ systemctl stop firewalld
備注:必須關(guān)閉
2.關(guān)閉selinux
$ setenforce 0
3.關(guān)閉swap
$ swapoff -a 臨時(shí)關(guān)閉
$ free 可以通過這個(gè)命令查看swap是否關(guān)閉了
$ vim /etc/fstab 永久關(guān)閉
備注:必須關(guān)閉
4.添加主機(jī)名與IP對(duì)應(yīng)的關(guān)系
$ vim /etc/hosts
添加如下內(nèi)容:
192.168.38.11 k8s-master
192.168.38.12 k8s-node1
192.168.38.13 k8s-node2
5.將橋接的IPV4流量傳遞到iptables 的鏈
$ cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
$ sysctl --system
6.安裝Docker
1)下載并安裝
$ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
$ yum -y install docker-ce-18.06.1.ce-3.el7
2)配置鏡像加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://jnboye7q.mirror.aliyuncs.com"]
}
EOF
3)設(shè)置開機(jī)啟動(dòng)
$ systemctl enable docker
$ systemctl start docker
4)查看Docker版本
$ docker --version
Docker version 18.06.1-ce, build e68fc7a
7.添加阿里云YUM軟件源
直接執(zhí)行如下命令
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
8.安裝kubeadm圾另,kubelet和kubectl
在部署kubernetes時(shí),要求master node和worker node上的版本保持一致雕沉,否則會(huì)出現(xiàn)版本不匹配導(dǎo)致奇怪的問題出現(xiàn)集乔。本文將介紹如何在CentOS系統(tǒng)上,使用yum安裝指定版本的Kubernetes坡椒。
我們需要安裝指定版本的kubernetes扰路。那么如何做呢?在進(jìn)行yum安裝時(shí)倔叼,可以使用下列的格式來進(jìn)行安裝:
yum install -y kubelet-<version> kubectl-<version> kubeadm-<version>
$ yum install -y kubelet-1.13.3 kubectl-1.13.3 kubeadm-1.13.3 kubernetes-cni-1.13.3
如果出現(xiàn)如下提示:
錯(cuò)誤:軟件包:kubelet-1.13.3-0.x86_64 (kubernetes)
需要:kubernetes-cni = 0.6.0
可用: kubernetes-cni-0.3.0.1-0.07a8a2.x86_64 (kubernetes)
kubernetes-cni = 0.3.0.1-0.07a8a2
可用: kubernetes-cni-0.5.1-0.x86_64 (kubernetes)
kubernetes-cni = 0.5.1-0
可用: kubernetes-cni-0.5.1-1.x86_64 (kubernetes)
kubernetes-cni = 0.5.1-1
可用: kubernetes-cni-0.6.0-0.x86_64 (kubernetes)
kubernetes-cni = 0.6.0-0
正在安裝: kubernetes-cni-0.7.5-0.x86_64 (kubernetes)
kubernetes-cni = 0.7.5-0
您可以嘗試添加 --skip-broken 選項(xiàng)來解決該問題
您可以嘗試執(zhí)行:rpm -Va --nofiles --nodigest
只需要清除yum 緩存即可汗唱,然后再執(zhí)行安裝命令
$ yum clean all
如果還不行,查看 https://blog.csdn.net/zqtsx/article/details/39207069
如果還不行丈攒,則直接安裝最新版的
$ yum makecache fast`
$ yum ``install` `-y kubelet kubeadm kubectl`
使用yum安裝程序時(shí)哩罪,提示xxx.rpm公鑰尚未安裝
使用 yum install xxx.rpm --nogpgcheck 命令格式跳過公鑰檢查,如下:
yum install cri-tools-1.12.0-0.x86_64 --nogpgcheck
yum install kubectl-1.14.1-0.x86_64 --nogpgcheck
yum install kubeadm-1.14.1-0.x86_64 --nogpgcheck
$ systemctl enable kubelet
9.部署Kubernetes Master
1)初始化kubeadm
kubeadm init \
--apiserver-advertise-address=192.168.65.11 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.16.3 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
當(dāng)出現(xiàn)如下結(jié)果巡验,表示初始化順利
建議至少2 cpu ,2G际插,非硬性要求,1cpu显设,1G也可以搭建起集群框弛。但是:1個(gè)cpu的話初始化master的時(shí)候會(huì)報(bào) [WARNING NumCPU]: the number of available CPUs 1 is less than the required 2部署插件或者pod時(shí)可能會(huì)報(bào)warning:FailedScheduling:Insufficient cpu, Insufficient memory如果出現(xiàn)這種提示,說明你的虛擬機(jī)分配的CPU為1核捕捂,需要重新設(shè)置虛擬機(jī)master節(jié)點(diǎn)內(nèi)核數(shù)瑟枫。
查看鏡像
$ docker images
2)使用kubectl工具
復(fù)制如下命令直接執(zhí)行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
下面就可以直接使用kubectl命令了
10.安裝Pod網(wǎng)絡(luò)插件(CNI)
1)安裝插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
2)查看是否部署成功
$ kubectl get pods -n kube-system
3)再次查看node,可以看到狀態(tài)為ready
安裝失敗了指攒,怎么清理環(huán)境重新安裝傲Ψ堋?執(zhí)行一條命令:
$ kubeadm reset
11.Node節(jié)點(diǎn)加入集群
向集群添加新節(jié)點(diǎn)幽七,執(zhí)行在kubeadm init輸出的kubeadm join命令:
復(fù)制上面命令景殷,在node節(jié)點(diǎn)上執(zhí)行
kubeadm join 192.168.65.11:6443 --token sv94vt.uiuhhj4okyq44e4w \
--discovery-token-ca-cert-hash sha256:7292a95f774a7ceab45ddc3bc334ba61df87e37a039a1a7d083c36476dfdf95c
如果一直卡在 “Running pre-flight checks” 上,則很可能是時(shí)間未同步,token失效導(dǎo)致
第一步猿挚,檢查master咐旧、node時(shí)間是否同步?
$ date
執(zhí)行如下命令同步時(shí)間
$ ntpdate time.nist.gov
第二步:如果還有其它錯(cuò)誤如 Port 10250 is in use绩蜻,執(zhí)行如下命令
$ kubeadm reset
然后再重新執(zhí)行kubeadm join ... 操作
如果出現(xiàn)如下錯(cuò)誤提示:
1)更改docker的啟動(dòng)參數(shù)
$ vim /usr/lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd
ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd
2)重啟docker
systemctl daemon-reload
systemctl restart docker
執(zhí)行成功后:
再通過master節(jié)點(diǎn)查看node铣墨,發(fā)現(xiàn)node節(jié)點(diǎn)已以成功加入集群,并且Status狀態(tài)為Ready
如果token忘記了办绝,則可以通過如下操作:
1)查看token伊约,如果token失效,則重新生成一個(gè)
$ kubeadm token list
$ kubeadm token create
2)獲取ca證書sha256編碼hash值
$ openssl x509 -pubkey -``in` `/etc/kubernetes/pki/ca``.crt | openssl rsa -pubin -outform der 2>``/dev/null` `| openssl dgst -sha256 -hex | ``sed` `'s/^.* //'
3)節(jié)點(diǎn)加入集群
kubeadm join 192.168.65.11:6443 --token sv94vt.uiuhhj4okyq44e4w \
--discovery-token-ca-cert-hash sha256:7292a95f774a7ceab45ddc3bc334ba61df87e37a039a1a7d083c36476dfdf95c
12.測(cè)試kubernetes集群
$ kubectl create deployment nginx --image=nginx
$ kubectl expose deployment nginx --port=80 --``type``=NodePort
$ kubectl get pod,svc
`$ kubectl get pod,svc -o wide`
通過瀏覽器訪問:http://192.168.38.11:30328 可以正常訪問