二進位制部署k8s 基於v1.22.2版本-不斷更新
阿新 • • 發佈:2021-10-26
一、提前準備
前面使用kubeadm部署了一套k8s,怎能沒有二進位制部署k8s呢?
二進位制部署k8s過程比較複雜,所以各元件我使用了目前最新的版本來部署,希望報錯報的足夠多,每解決一個報錯就能減少以後加班的時間,加油!
1.1 部署叢集的兩種方式
- kubeadm部署
Kubeadm是一個K8s部署工具,提供kubeadm init
和kubeadm join
,用於快速部署Kubernetes叢集。
部署過程可參考這篇博文
參考資料:kubeadm官方文件
- 二進位制部署
從github下載發行版的二進位制包,手動部署每個元件,組成Kubernetes叢集。
Kubeadm降低部署門檻,但遮蔽了很多細節,遇到問題很難排查。如果想更容易可控,推薦使用二進位制包部署Kubernetes叢集,雖然手動部署麻煩點,期間可以學習很多工作原理,也利於後期維護。
1.2 環境介紹
伺服器要求:
-
建議最小硬體配置:2核CPU、2G記憶體、30G硬碟
-
可以訪問外網,需要拉取映象,如果伺服器不能上網,需要提前下載映象並匯入節點
軟體環境:
軟體 | 版本 |
---|---|
作業系統 | CentOS 7.9.2009 |
容器引擎 | Docker CE 20.10.9 |
kube-apiserver | Kubernetes 1.22.2 |
kube-controller-manager | |
kube-scheduler |
因為k8s對系統核心有要求如果低於centos7,最好更新一下核心,更新核心看這篇
伺服器整體規劃:
角色 | IP | 元件 |
---|---|---|
k8s-master1 | 10.154.0.111 | kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy,docker,etcd,nginx,keepalived |
k8s-master2 | 10.154.0.110 | kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,kube-proxy,docker,etcd,nginx,keepalived |
k8s-node1 | 10.154.0.112 | kubelet,kube-proxy,docker ,etcd |
k8s-node2 | 10.154.0.113 | kubelet,kube-proxy,docker,etcd |
Load Balancer(負載均衡器) | 10.154.0.114(VIP) |
先部署一套單Master架構(10.154.0.111/112/113這三臺),再擴容為多Master架構,順便熟悉下Master擴容流程。
單Master架構圖:
單Master伺服器規劃:
角色 | IP | 元件 |
---|---|---|
k8s-master | 10.154.0.111 | kube-apiserver,kube-controller-manager,kube-scheduler,etcd |
k8s-node1 | 10.154.0.112 | kubelet,kube-proxy,docker etcd |
k8s-node2 | 10.154.0.113 | kubelet,kube-proxy,docker,etcd |
二進位制部署軟體步驟:
- 下載二進位制包
- 將二進位制程式移動到工作目錄
- 編輯配置檔案
- 啟動服務
1.3 環境準備
以下配置除了設定主機名,所有機器都要做
#關閉防火牆跟selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
#關閉swap
swapoff -a #臨時
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 根據規劃設定主機名
hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02
#新增hosts
cat >> /etc/hosts << EOF
10.154.0.111 k8s-master01
10.154.0.112 k8s-node01
10.154.0.113 k8s-node02
EOF
#啟用IPv4模組,三臺機器都要做
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
# 時間同步,後續k8s生成證書需要機器時間一致
yum install ntpdate -y
ntpdate time.windows.com
#重啟伺服器
reboot
今天的學習是為了以後的工作更加的輕鬆!