k8s環境搭建

LemHou發表於2024-10-13

k8s環境搭建

有一臺以上虛擬或者真機就可以搭建。

cat /proc/version # 檢視系統版本, 此次使用的是ubuntu20.0, docker版本是27.2.1意味著,k8s版本必須在1.20以上

安裝docker執行時

# 選擇對應系統的deb安裝包進行下載
wget https://https://github.com/Mirantis/cri-dockerd/releases/tag/v0.3.4/cri-dockerd_0.3.4.amd64.tgz
tar -zxvf cri-dockerd-0.3.4.amd64.tgz -C /tmp


cp /tmp/cri-dockerd/cri-dockerd /usr/bin/


# 將下載的cri-docker.service和cri-docker.socket放置到合適位置
cp cri-docker.service cri-docker.socket /etc/sytemd/system
cd /etc/systemd/system
vim cri-docker.service

# 在cri-docker.service新增以下兩句 fd:// --network-plugin=cni  --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
[Service]
Type=notify
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni  --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

# 修改完畢之後載入配置,設定開機啟動
systemctl daemon-reload
systemctl enable --now cri-docker.service cri-docker.socket
systemctl enable cri-docker # 開機啟動
systemctl start cri-docker

關閉防火牆以及安全模式

# 設定group driver為systemd
vim /etc/docker/daemon.json
# 增加配置內容
"exec-opts":[
	"native.cgroupdriver=systemd"
]
# 關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
# 禁用selinux安全模式
apt install selinux-utils
getenforce # 檢視enforce
setenforce 0
# 禁用swap
free # 檢視交換區
swapoff -a # 禁用交換區
# 開啟檔案交換區註釋定義
vim /etc/fstab
註釋/swap.img行 /swapfile

# 修改系統主機名
hostnamectl set-hostname k8s-master
reboot # 重啟使主機名生效

# 增加主機名與本機IP對映
vim /etc/hosts
172.0.1.1 k8s-master

安裝kubeadm

# kubeadm基本工具安裝
# 匯入k8s映象源
apt-get update
# 安裝GPG金鑰準備
apt-get install -y apt-transport-https ca-certificates curl
# 安裝GPG金鑰
curl -fsSL https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
# 設定k8s映象源
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | tee /etc/apt/sources.list.d/kubernetes.list
# 檢視k8s版本
apt-cache madison kubelet kubeadm kubectl
# 安裝k8s特定版本
apt-get install -y kubelet=1.24.1-00 kubeadm=1.24.1-00 kubectl=1.24.1-00
# 安裝最新版本
apt-get install -y kubelet kubeadm kubectl
# 如果需要解除安裝,使用以下指令
# apt-get remove kubelet kubectl kubeadm
# 鎖定軟體版本-禁止升級
apt-mark hold kubelet kubeadm kubectl
# kublet剛安裝完成時,會處於一個自啟動狀態,
systemctl status kubelet

初始化主節點

# 在有init.default.yaml檔案的目錄下初始化master
kubeadm config print init-defaults > init.default.yaml

# 修改配置檔案
vim init.default.yaml
# 修改以下內容
advertiseAddress:192.168.137.131 # 設定為自己的ip
criSocket:///var/run/cri-dockerd.sock # 設定sock
name:k8s-master # 更改名字
imageRepository:registry.aliyuncs.com/google_containers # 映象容器更改
kubernetesVersion: 1.24.1
# 增加podSubnet,由於後續會安裝flannel 網路外掛,該外掛必須在叢集初始化時指定pod地址
# 10.244.0.0/16 為flannel元件podSubnet預設值,叢集配置與網路元件中的配置需保持一致
networking.podSubnet: 10.244.0.0/16

# 拉取相關映象
kubeadm config images pull --config=init.default.yaml
# 初始化叢集主節點
kubeadm init --config=init.default.yaml --ignore-preflight-errors=all

# 普通使用者和根使用者二選一
# 普通使用者執行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 根使用者下執行
export KUBECONFIG=/etc/kubernetes/admin.conf
source /etc/profile

# 新增節點到叢集命令
kubeadm join 192.168.137.131:6443 --token abcdef.0123456789abcdef \
	--discovery-token-ca-cert-hash sha256:3384be2b7788c450fc7d43250f37bd4bfa9a5f7782ff25ca277ae673be0b1ff8 
	
# 檢視叢集狀態
# 檢視所有pod
kubectl get pods --all-namespaces
# 檢視節點
kubectl get node
# 檢視所有元件 cs代表的資源是componentstatuses
kubectl get cs