1. 程式人生 > 其它 >二進位制部署k8s 基於v1.22.2版本-不斷更新

二進位制部署k8s 基於v1.22.2版本-不斷更新

一、提前準備

前面使用kubeadm部署了一套k8s,怎能沒有二進位制部署k8s呢?

二進位制部署k8s過程比較複雜,所以各元件我使用了目前最新的版本來部署,希望報錯報的足夠多,每解決一個報錯就能減少以後加班的時間,加油!

1.1 部署叢集的兩種方式

  • kubeadm部署

Kubeadm是一個K8s部署工具,提供kubeadm initkubeadm 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. 下載二進位制包
  2. 將二進位制程式移動到工作目錄
  3. 編輯配置檔案
  4. 啟動服務

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
今天的學習是為了以後的工作更加的輕鬆!