CentOS7 部署K8S叢集,最新版1.17.3-0
小白在網上找了很多關於k8s叢集部署的文件,但是版本老舊,到處踩坑,終於部署成功,記錄下過程。
一、準備工作
虛擬機器:VMware® Workstation 15 Pro
Xhell 6:Xshell.exe: 6.0.0025
作業系統:CentOS-7
這裡對虛擬機器有個要求,2cpu,記憶體2g,不然初始化master會警告
具體的關於虛擬機器安裝可以看另一篇文章https://www.cnblogs.com/CoderLinkf/p/12393993.html
部署規劃
192.168.3.180 k8s-master 192.168.2.156 k8s-node1
1.關閉防火牆,這點基本所有教程都有
systemctl stop firewalld
2.關閉selinux
setenforce 0
3.關閉swap
swapoff -a 臨時關閉
free 可以通過這個命令檢視swap是否關閉了
vim /etc/fstab 永久關閉
4.新增主機名與IP對應的關係
vim /etc/hosts
192.168.3.180 k8s-master 192.168.2.156 k8s-node1
當然,ip要改成自己的
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)安裝docker
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
2)設定docker服務開機自啟
systemctl enable docker systemctl start docker
3)檢視docker版本,這裡是最新版
docker --version
Docker version 19.03.6, build 369ce74a3c
7.新增阿里雲YUM軟體源
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
yum makecache fast yum install -y kubelet kubeadm kubectl --nogpgcheck
指定版本沒試過,這裡直接安裝最新版,並且跳過公鑰檢查
9.部署Kubernetes Master
1)初始化kubeadm
kubeadm init --apiserver-advertise-address=192.168.3.180 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.17.3 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16
一樣的,記得改成自己的master節點ip
當出現如下結果,表示初始化順利,這一步要等待幾分鐘,並且一開始沒有進度提示,一度以為卡了
檢視映象
docker images
2)接下來,將初始化結果中的命令複製出來執行:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
下面的命令等會兒用來新增節點
kubeadm join 192.168.3.180:6443 --token dfug5t.cscrkl8hy8whplx7 \ --discovery-token-ca-cert-hash sha256:625f94e773c68ba673f44157e8983640a4505232c0adc0cb8a10f7c05e602c90
到此,就可以使用kubectl命令了
kubectl get node
但是是notready狀態,
執行 kubectl get pods -n kube-system 命令可以看到,頭兩個狀態是pending
10.安裝flannel
1)這裡,大部分文件的flannel安裝連結基本都失效了,找了很久找到一個
https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml
將這個檔案下載下來,ftp到root下面,然後開始執行
或者執行命令儲存:wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i '[email protected]@quay.azk8s.cn@g' kube-flannel.yml kubectl apply -f kube-flannel.yml
2)檢視是否部署成功
kubectl get pods -n kube-system
3)再次執行 kubectl get node 命令,可以看到,狀態是ready
安裝失敗了,怎麼清理環境重新安裝啊?執行一條命令:
kubeadm reset
然後重新初始化即可
11.Node節點加入叢集
node節點虛擬機器,執行1-8步,然後執行master節點初始化kubeadm時的命令
kubeadm join 192.168.3.180:6443 --token dfug5t.cscrkl8hy8whplx7 \ --discovery-token-ca-cert-hash sha256:625f94e773c68ba673f44157e8983640a4505232c0adc0cb8a10f7c05e602c90
如果一直卡在 “Running pre-flight checks” 上,則很可能是時間未同步,token失效導致
可以在master節點執行
kubeadm token list
kubeadm token create
重新生成即可
openssl x509 -pubkey -
in
/etc/kubernetes/pki/ca
.crt | openssl rsa -pubin -outform der 2>
/dev/null
| openssl dgst -sha256 -hex |
sed
's/^.* //'
kubeadm reset<br>$ kubeadm
join
192.168.38.11:6443 --token unnscz.aq2r62cuc14w27oa \ --discovery-token-ca-cert-
hash
sha256:8b79b6461e58c07333cb2851fe74fd4374af8bbbe0bf7e040b415b86ad4fb89d
12.測試kubernetes叢集
在master節點中
kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=80 --type=NodePort kubectl get pod,svc
然後執行 kubectl get pods 檢視
kubectl get pod,svc -o wide
通過瀏覽器訪問:http://192.168.3.180:32049 正常訪問
參考文章:
https://www.cnblogs.com/caoxb/p/11243472.html
https://www.cnblogs.com/zyxnhr/p/12181721.html#_labe