溫馨提示×

Ubuntu K8S部署指南

小樊
42
2025-10-14 07:40:29
欄目: 智能運維

Ubuntu環境下Kubernetes(K8s)集群部署指南

一、準備工作

1. 系統要求

  • 操作系統:Ubuntu 20.04及以上版本(推薦LTS版本,穩定性更高);
  • 硬件要求:至少2核CPU、2GB內存、20GB以上磁盤空間(生產環境建議4核CPU、4GB內存以上);
  • 網絡要求:所有節點(Master/Worker)之間網絡互通,無防火墻阻攔(或開放必要端口:API服務器6443、kubelet端口10250等);
  • 節點角色:至少1個Master節點(控制集群)、1個及以上Worker節點(運行應用)。

2. 系統初始化配置

(1)更新系統軟件包

sudo apt update && sudo apt upgrade -y

(2)關閉Swap分區(K8s要求)

sudo swapoff -a  # 臨時關閉
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab  # 永久關閉(注釋掉swap行)

(3)加載內核模塊(支持網絡虛擬化)

sudo modprobe overlay
sudo modprobe br_netfilter

(4)設置內核參數(允許Pod網絡通信)

sudo tee /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system  # 生效配置

(5)安裝必要工具

sudo apt install -y apt-transport-https curl software-properties-common

二、安裝Docker容器運行時

K8s需要容器運行時來管理容器,推薦使用Docker(社區最常用):

# 添加Docker官方GPG密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加Docker軟件源
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安裝Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

# 啟動Docker并設置開機自啟
sudo systemctl enable --now docker

# 驗證Docker安裝
sudo docker run hello-world

三、安裝Kubernetes核心組件

1. 添加Kubernetes軟件源

# 添加Kubernetes官方GPG密鑰
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg

# 添加Kubernetes軟件源
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list > /dev/null

# 更新軟件包列表
sudo apt update

2. 安裝kubeadm、kubelet、kubectl

sudo apt install -y kubelet kubeadm kubectl

# 鎖定組件版本(防止自動升級導致集群異常)
sudo apt-mark hold kubelet kubeadm kubectl

四、初始化Master節點

1. 初始化Master節點

sudo kubeadm init --pod-network-cidr=10.244.0.0/16  # 指定Pod網絡CIDR(與后續網絡插件匹配)

說明--pod-network-cidr需與選擇的網絡插件(如Flannel、Calico)要求的CIDR一致,避免網絡沖突。

2. 配置kubectl(普通用戶使用)

# 創建.kube目錄
mkdir -p $HOME/.kube

# 復制集群配置文件到用戶目錄
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

# 修改配置文件權限
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3. 安裝網絡插件(以Flannel為例)

K8s需要網絡插件實現Pod間通信,推薦使用Flannel(輕量、易部署):

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

可選插件:若需更豐富的功能(如網絡策略),可使用Calico:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

五、加入Worker節點

1. 獲取加入命令

Master節點初始化完成后,終端會輸出類似以下命令(務必保存):

kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \
    --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2. 在Worker節點執行加入命令

將上述命令復制到每個Worker節點,運行后等待節點狀態變為Ready。

六、驗證集群狀態

1. 檢查節點狀態

在Master節點上運行:

kubectl get nodes

預期結果:所有節點(Master/Worker)狀態均為Ready。

2. 檢查Pod狀態

kubectl get pods -A

預期結果:所有Pod狀態均為Running(網絡插件Pod可能需要1-2分鐘啟動)。

七、注意事項

  1. 防火墻配置:若開啟防火墻,需開放以下端口:

    • API服務器:6443(TCP)
    • kubelet:10250(TCP)
    • 網絡插件:根據插件要求開放(如Flannel需要UDP 8285/8472)
    sudo ufw allow 6443/tcp
    sudo ufw allow 10250/tcp
    
  2. 版本兼容性:確保Docker、kubeadm、kubelet、kubectl版本兼容(參考K8s官方文檔的版本矩陣)。

  3. 生產環境優化

    • 使用高可用Master架構(多Master節點+etcd集群);
    • 配置RBAC(基于角色的訪問控制)增強安全性;
    • 使用私有鏡像倉庫(如Harbor)存儲容器鏡像;
    • 定期備份etcd數據(集群核心數據)。
  4. 故障排查

    • 若節點狀態為NotReady,檢查網絡插件是否正常運行;
    • 若Pod無法啟動,查看Pod日志定位問題:
      kubectl describe pod <pod-name> -n <namespace>
      kubectl logs <pod-name> -n <namespace>
      

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女