最新centos7 部署 k8s v1.26,簡單易懂,跟著命令敲就完事

2023-04-05 06:00:26

其實沒什麼好說的,搭環境搞了一整天,人已經麻了,踩了很多坑,網上教學的版本大都比較舊,總是和最新版本各種地方不相容,把坑踩完了,k8s目前最新的版本是v1.26,跟著命令敲就行了,我已經重複部署了很多次了,坑已經排完了....

我試驗的是1主2從結構,centos 2c2g 就足夠。

centos7 部署 k8s 1m2n

1 系統環境準備

1.1 設定主機名

[root@localhost ~]# hostnamectl set-hostname master0

[root@localhost ~]# cat /etc/hosts
192.168.19.128 master0
192.168.19.129 node0
192.168.19.130 node1
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

1.2 關閉selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config 
setenforce 0

1.3 設定ip

vim /etc/sysconfig/network-scripts/ifcfg-ens33

IPADDR=192.168.19.129
GATEWAY=192.168.19.2
NETMASK=255.255.255.0
DNS1=8.8.8.8

service network restart
# 關閉swap
swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

1.4 安裝ipvs 轉發支援 【所有節點】

# 系統依賴包
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

# 開啟ipvs 轉發
modprobe br_netfilter 

cat > /etc/sysconfig/modules/ipvs.modules << EOF 
#!/bin/bash 
modprobe -- ip_vs 
modprobe -- ip_vs_rr 
modprobe -- ip_vs_wrr 
modprobe -- ip_vs_sh 
modprobe -- nf_conntrack
EOF 

chmod 755 /etc/sysconfig/modules/ipvs.modules 
bash /etc/sysconfig/modules/ipvs.modules 
lsmod | grep -e ip_vs -e nf_conntrack

1.5 安裝containerd [全部節點安裝]

# 建立 /etc/modules-load.d/containerd.conf 組態檔:

cat << EOF > /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter
# 獲取阿里雲YUM源
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 下載安裝:
yum install -y containerd.io

1.6 設定containerd [所有節點]

# 生成containerd的組態檔
mkdir /etc/containerd -p 

# 生成組態檔
containerd config default > /etc/containerd/config.toml

# 編輯組態檔
vim /etc/containerd/config.toml

將 sandbox_image = "k8s.gcr.io/pause:3.6" 
改為:sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"


systemctl enable containerd
systemctl start containerd

二:安裝k8s 1.26.x

2.1 設定 k8s 1.26 的yum 源

# 新增阿里雲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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

yum makecache 

2.2 安裝kubeadm,kubelet和kubectl

# 目前最新版本是1.26.0,我們直接上最新版
yum install -y kubectl kubelet kubeadm

# 設定kubelet為開機自啟動即可,由於沒有生成組態檔,叢集初始化後自動啟動
systemctl enable kubelet

# 準備k8s  1.26.0 所需要的映象
kubeadm config images list --kubernetes-version=v1.26.0

2.3 叢集初始化

# 使用kubeadm init命令初始化
#在master0上執行,報錯請看k8s報錯彙總
echo 1 > /proc/sys/net/ipv4/ip_forward 
kubeadm init --kubernetes-version=v1.26.0 --pod-network-cidr=10.224.0.0/16 --apiserver-advertise-address=192.168.19.128 --image-repository registry.aliyuncs.com/google_containers

# 註釋
# --apiserver-advertise-address 叢集通告地址(此處設定為 master0 地址)
# --image-repository 由於預設拉取映象地址k8s.gcr.io國內無法存取,這裡指定阿里雲映象倉庫地址
# --kubernetes-version K8s版本,與上面安裝的一致
# --service-cidr 叢集內部虛擬網路,Pod統一存取入口
# --pod-network-cidr Pod網路,,與下面部署的CNI網路元件yaml中保持一致

# 上面命令執行完後,會生成兩條提示,分別執行
# root 使用者,master0 上執行
export KUBECONFIG=/etc/kubernetes/admin.conf

# 其它節點加入叢集
kubeadm join 192.168.19.128:6443 --token pb1jpq.ogibtvmpk29l7pol \
	--discovery-token-ca-cert-hash sha256:099131e6bfc2d69a9d68b3ee52e2d29bce0ad8b5193ffe2559d231c63713a04a


2.5 叢集部署網路外掛

# 網路元件有很多種,只需要部署其中一個即可,推薦Calico。
# Calico是一個純三層的資料中心網路方案,Calico支援廣泛的平臺,包括Kubernetes、OpenStack等。
# Calico 在每一個計算節點利用 Linux Kernel 實現了一個高效的虛擬路由器( vRouter) 來負責資料轉發,而每個 vRouter 通過 BGP # 協定負責把自己上執行的 workload 的路由資訊向整個 Calico 網路內傳播。
# 此外,Calico 專案還實現了 Kubernetes 網路策略,提供ACL功能。
# 下載Calico
wget http://manongbiji.oss-cn-beijing.aliyuncs.com/ittailkshow/k8s/download/calico.yaml
kubectl apply -f calico.yaml
# 檢視節點:
kubectl get node 

常用命令

# 查詢node
kubectl get nodes -o wide

# 查詢 pod
kubectl get pods -o wide (-A 查詢全部pod --namespace=‘default’ 預設查詢名稱空間為default的)

# 檢視pod詳情
kubectl describe pod <pod name>