Debian12 安裝kubernetes1.28

YueQAQ發表於2024-06-22

部署kubernetes

設別基礎配置標準

  • Minimal Installed Debian 12 /11
  • 2 CPU / vCPU
  • 2 GB RAM
  • 20 GB free disk space
  • Sudo User with Admin rights
  • Stable Internet Connectivity
  • Ensure that each node can communicate with the others via a reliable network connection.

1. 設定hostname和hosts檔案

 sudo hostnamectl set-hostname "master"      // Run on master node
 sudo hostnamectl set-hostname "node1"    // Run on 1st worker node
 sudo hostnamectl set-hostname "ndoe2"    // Run on 2nd worker node

/etc/hosts 配置

10.0.8.2 master
10.0.0.6 node1
10.0.8.15 node2

2. 關閉所有節點的swap

目的:1. 平滑執行 2. 讓記憶體洩漏的容器快速死亡

sudo swapoff -a
sudo sed -i  '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

debian 非root下可能沒有設定/usr/sbin 的環境變數,導致無法執行一些命令,設定下即可。

3. 新增防火牆規則

4. 安裝Container

安裝前所有節點設定核心引數

$ cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf 
overlay 
br_netfilter
EOF
$ sudo modprobe overlay 
$ sudo modprobe br_netfilter
$ cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1 
net.bridge.bridge-nf-call-ip6tables = 1 
EOF

執行 sudo sysctl --system 使得引數修改生效

安裝Container

sudo apt update
sudo apt -y install containerd

在所有節點生成匯入預設配置

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1

使用SystemdCgroup配置,將 ‘SystemdCgroup = false’ 修改為 ‘SystemdCgroup = true‘

sudo vi /etc/containerd/config.toml

重啟服務使配置生效

sudo systemctl restart containerd
sudo systemctl enable containerd

5. 新增kubernetes源

安裝工具

sudo apt-get update
# apt-transport-https may be a dummy package; if so, you can skip that package
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

新增儲存庫

echo "deb [trusted=yes] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list

6. 安裝kubelet kubeadn kubectl,並固定版本

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

7. 使用 Kubeadm 安裝 Kubernetes 叢集

我選擇生成配置檔案,透過配置檔案初始化

kubeadm config print init-defaults > init.yaml
advertiseAddress: #修改為master節點的ip
......
node:修改為master的hostname

如果初始化正常, 控制檯會提示執行以下命令

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 在節點執行後加入叢集
kubeadm join 10.0.8.2:6443 --token abcdef.0123456789abcdef \
        --discovery-token-ca-cert-hash sha256:186e7256966f0e2b3485a3b3ab15a0f1357195745e3d2fa6e9f386cfc24ecc5d

執行以下 kubectl 命令來獲取節點和叢集資訊,

kubectl get nodes
kubectl cluster-info

8. 使用 Calico 設定 Pod 網路

wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
kubectl apply -f calico.yaml

如果有防火牆,則開放calico埠

sudo ufw allow 179/tcp
sudo ufw allow 4789/udp
sudo ufw allow 51820/udp
sudo ufw allow 51821/udp
sudo ufw reload

過幾分鐘後,驗證calico狀態

 kubectl get pods -n kube-system

9. 驗證叢集

啟nginx deployment測試

kubectl create deployment nginx-app --image=nginx --replicas 2
kubectl expose deployment nginx-app --name=nginx-web-svc --type NodePort --port 80 --target-port 80

執行kubectl describe svc nginx-web-svc 得到如下:

使用curl命令測試curl http://node1:31743

相關文章