Kubeadm部署Kubernetes叢集
- Kubernetes介紹
- 實踐操作
-
-
- 前期準備
- 安裝docker
- 安裝kubeadm
- 初始化Master
- 加入Node節點
- 檢查叢集狀态
-
Kubernetes介紹
kubeadm是Kubernetes項目自帶的及叢集建構工具,負責執行建構一個最小化的可用叢集以及将其啟動等的必要基本步驟,kubeadm是Kubernetes叢集全生命周期的管理工具,可用于實作叢集的部署、更新、降級及拆除。kubeadm部署Kubernetes叢集是将大部分資源以pod的方式運作,例如(kube-proxy、kube-controller-manager、kube-scheduler、kube-apiserver、flannel)都是以pod方式運作。
Kubeadm僅關心如何初始化并啟動叢集,餘下的其他操作,例如安裝Kubernetes Dashboard、監控系統、日志系統等必要的附加元件則不在其考慮範圍之内,需要管理者自行部署。
Kubeadm內建了Kubeadm init和kubeadm join等工具程式,其中kubeadm init用于叢集的快速初始化,其核心功能是部署Master節點的各個元件,而kubeadm join則用于将節點快速加入到指定叢集中,它們是建立Kubernetes叢集最佳實踐的“快速路徑”。另外,kubeadm token可于叢集建構後管理用于加入叢集時使用的認證令牌(token),而kubeadm reset指令的功能則是删除叢集建構過程中生成的檔案以重置回初始狀态。
實踐操作
三台機器我都準備2核處理器和2G記憶體(這是最低要求)

伺服器名 | IP位址 |
---|---|
k8s-master | 192.168.182.204 |
k8s-node1 | 192.168.182.210 |
k8s-node2 | 192.168.182.211 |
前期準備
下面初始化環境工作master節點和node節點都需要執行
1.關閉防火牆
systemctl stop firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
2.如需要關閉swap,(由于伺服器本來配置就低,這裡就不關閉swap,在後面部署過程中忽略swap報錯即可)
swapoff -a #臨時
vim /etc/fstab #永久
3.時間同步
yum -y install ntpdate
ntpdate 0.rhel.pool.ntp.org
4.host綁定
vim /etc/hosts
192.168.182.204 k8s-master
192.168.182.210 k8s-node1
192.168.182.211 k8s-node2
安裝docker
master節點和所有node節點都需要執行
1.配置docker的yum倉庫(這裡使用阿裡雲倉庫)
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.安裝docker
yum -y install docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
3.修改docker cgroup driver為systemd
systemctl start docker
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl restart docker
docker info |grep Cgroup
安裝kubeadm
master節點和所有node節點都需要執行
1.配置kubenetes的yum倉庫(這裡使用阿裡雲倉庫)
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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
安裝所需檔案
rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
rpm --import https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
yum makecache
2.安裝kubelat、kubectl、kubeadm
yum -y install kubelet-1.15.2 kubeadm-1.15.2 kubectl-1.15.2
rpm -aq kubelet kubectl kubeadm
3.将kubelet加入開機啟動,這裡剛安裝完成不能直接啟動。(因為目前還沒有叢集還沒有建立)
systemctl enable kubelet
初始化Master
注意:在master節點執行
1.配置忽略swap報錯
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
2.初始化master
kubeadm init --kubernetes-version=v1.15.2 --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
注意:這裡最後最後一部分是要複制到node1和node2上
**例如:**
kubeadm join 192.168.1.100:6443 --token a4pjca.ubxvfcsry1je626j \
--discovery-token-ca-cert-hash sha256:784922b9100d1ecbba01800e7493f4cba7ae5c414df68234c5da7bca4ef0c581
–kubernetes-version #指定Kubernetes版本
–image-repository #由于kubeadm預設是從官網k8s.grc.io下載下傳所需鏡像,國内無法通路,是以這裡通過–image-repository指定為阿裡雲鏡像倉庫位址
–pod-network-cidr #指定pod網絡段
–service-cidr #指定service網絡段
–ignore-preflight-errors=Swap #忽略swap報錯資訊
3.按照上面初始化成功提示建立配置檔案
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
docker image ls #進行檢視
4.添加flannel網絡元件
方法一:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl get pods -n kube-system |grep flannel #驗證flannel網絡插件是否部署成功(Running即為成功)
由于flannel預設是從國外拉取鏡像,是以經常拉取不到,故使用下面方法二進行安裝
方法二:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
sed -i 's#quay.io#quay-mirror.qiniu.com#g' kube-flannel.yml
kubectl apply -f kube-flannel.yml
加入Node節點
兩台配置一樣
1.配置忽略swap報錯
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
2.加入node1節點
比如:
kubeadm join 192.168.1.100:6443 --token a4pjca.ubxvfcsry1je626j --discovery-token-ca-cert-hash sha256:784922b9100d1ecbba01800e7493f4cba7ae5c414df68234c5da7bca4ef0c581 --ignore-preflight-errors=Swap
差別是多了一行自行添加 --ignore-preflight-errors=Swap
檢查叢集狀态
在master節點輸入指令檢查叢集狀态,傳回如下結果則叢集狀态正常
重點檢視STATUS内容為Ready時,則說明叢集狀态正常。
檢視叢集用戶端和服務端程式版本資訊
檢視叢集資訊