文章目錄
- K8S二進制安裝
- 部署etcd
- 測試etcd集群(可選)
- 恢復etcd數據庫
- 部署master組件
- 部署node組件
- K8S kubeadm安裝
- 關鍵命令
- 更新kubeadm安裝的K8S證書有效期
- 方法一
- 方法二
- 查看證書有效期
K8S二進制安裝
部署etcd
- 使用cfssl工具簽發證書和私鑰
- 下載解壓etcd軟件包,獲取二進制文件 etcd etcdctl
- 準備etcd集群的配置文件
- 啟動etcd服務進程,將所有etcd節點加入到集群中
測試etcd集群(可選)
查看etcd集群健康狀態
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" --cacert=CA證書 --cert=客戶端證書 --key=客戶端私鑰 -wtable endpoint health
查看etcd集群信息
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" --cacert=CA證書 --cert=客戶端證書 --key=客戶端私鑰 -wtable endpoint status
查看etcd集群成員列表
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379,https://IP2:2379,https://IP3:2379" --cacert=CA證書 --cert=客戶端證書 --key=客戶端私鑰 -wtable member list
插入鍵值
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA證書 --cert=客戶端證書 --key=客戶端私鑰 put 鍵名 '鍵值'
查詢鍵值
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA證書 --cert=客戶端證書 --key=客戶端私鑰 get 鍵名
刪除鍵值
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA證書 --cert=客戶端證書 --key=客戶端私鑰 del 鍵名
查看所有的鍵
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA證書 --cert=客戶端證書 --key=客戶端私鑰 get --keys-only --prefix ""
備份etcd數據庫
ETCDCTL_API=3 etcdctl --endpoints="https://IP1:2379" --cacert=CA證書 --cert=客戶端證書 --key=客戶端私鑰 snapshot save 備份文件路徑
查看備份數據的信息
ETCDCTL_API=3 etcdctl -wtable snapshot status 備份文件路徑
恢復etcd數據庫
- 關閉etcd數據庫
systemctl stop etcd
- 備份當前數據目錄
mv /var/lib/etcd /var/lib/etcd.bak
- 在各個節點使用 etcdctl snapshot restore 恢復數據
ETCDCTL_API=3 etcdctl snapshot restore /root/etcd.db1 --data-dir /var/lib/etcd --name <節點名稱> --initial-advertise-peer-urls https://<當前節點IP>:2380 --initial-cluster etcd01=https://IP1:2380,etcd02=https://IP2:2380,etcd03=https://IP3:2380 --initial-cluster-token <etcd集群Token>
- 啟動etcd數據庫
systemctl start etcd
- 使用etcdctl驗證etcd集群狀態和數據
部署master組件
- 使用
cfssl
工具簽發證書和私鑰 - 下載解壓K8S server軟件包,獲取二進制文件
kube-apiserver kube-controller-manager kube-scheduler kubectl
- 準備apiserver啟動時需要調用的
token.csv
文件 - 準備
apiserver
、controller-manager
、scheduler
的啟動參數配置文件 - 準備
controller-manager
、scheduler
、kubectl的kubeconfig
集群引導配置文件(用于連接和驗證apiserver) - 啟動
apiserver
、controller-manager
、scheduler
的服務進程 - 執行
kubectl get cs
命令查看master組件的健康狀態
部署node組件
- 安裝容器引擎
- 獲取二進制文件
kubelet kube-proxy
- 準備
kubelet
和kube-proxy
的kubeconfig
集群引導配置文件bootstrap.kubeconfig
(kubelet首次訪問apiserver時使用的文件)、kube-proxy.kubeconfig
- 準備
kubelet
和kube-proxy
的啟動參數配置文件 - 啟動kubelet服務進程(
kubelet
首次啟動,會使用bootstrap.kubeconfig
向apiserver
發起連接和CSR請求簽發證書,master
批準CSR請求后會由controller-manager
生成kubelet
的證書,再由apiserver
發送給kubelet
) - 先加載
ipvs
模塊,再啟動kube-proxy
服務進程 - 安裝
CNI
網絡插件(flannel/caclico
,創建Pod網絡和實現Pod跨節點通信)和coreDNS
(為K8S內的Pod提供DNS解析服務,可以使得在Pod中根據service資源名稱解析成對應的clusterIP) - 執行
kubectl get nodes
名稱查看node節點的狀態
K8S kubeadm安裝
關鍵命令
kubeadm init
kubeadm join
- 所有節點進行初始化(防火墻、selinux、系統時間、內核版本、主機名、內核參數、ipvs模塊),安裝容器引擎、kubelet、kubeadm、kubectl,部署nginx/haproxy負載均衡和keepalived高可用
- 執行kubeadm config print init-defaults命令生成K8S集群初始化配置文件,并進行參數修改配置
- 執行kubeadm init --config 指定初始化配置配置文件 進行K8S集群的初始化,生成K8S集群的管理控制節點(master節點)
- 在其它節點執行kubeadm join命令將其它的master或node節點加入到K8S集群中
- 安裝cni網絡插件(flannel、calico)
更新kubeadm安裝的K8S證書有效期
方法一
在master節點執行腳本./update-kubeadm-cert.sh all
,將所有證書自動更新為十年有效期
方法二
cp /etc/kubernetes /etc/kubernetes.old #備份
kubeadm certs renew all --config 集群初始化配置文件 #重新更新證書一年有效期
kubeadm init phase kubeconfig all --config 集群初始化配置文件 #更新kubeconfig配置文件
systemctl restart kubelet #重啟kubelet服務進程
mv /etc/kubernetes/manifests/*.yaml /tmp && sleep 10 && mv /tmp/*.yaml /etc/kubernetes/manifests/ #重啟以Pod形式運行的K8S組件
查看證書有效期
kubeadm certs check-expiration
openssl x509 -noout -dates -in /etc/kubernetes/pki/*.crt