溫馨提示×

Debian上Kubernetes網絡配置

小樊
52
2025-10-04 13:36:14
欄目: 智能運維

Debian上Kubernetes網絡配置指南

在Debian系統上配置Kubernetes網絡需完成基礎環境準備、集群初始化、網絡插件部署驗證等關鍵步驟,以下是詳細流程:

一、基礎環境準備

1. 關閉Swap分區

Kubelet要求節點關閉swap,否則無法正常運行。執行以下命令:

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

2. 配置網絡接口

編輯/etc/network/interfaces(Debian傳統方式)或使用Netplan(Debian 10+推薦)設置靜態IP(集群節點需固定IP):

  • 傳統方式(static)
    auto eth0
    iface eth0 inet static
        address 192.168.1.100  # 節點IP
        netmask 255.255.255.0
        gateway 192.168.1.1
        dns-nameservers 8.8.8.8 8.8.4.4
    
  • Netplan方式(YAML配置): 編輯/etc/netplan/01-netcfg.yaml
    network:
      version: 2
      renderer: networkd
      ethernets:
        eth0:
          dhcp4: no
          addresses: [192.168.1.100/24]
          gateway4: 192.168.1.1
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4]
    
    應用配置:sudo netplan apply

3. 安裝容器運行時(Containerd)

Kubernetes推薦使用containerd作為容器運行時。執行以下命令:

sudo apt update
sudo apt install -y containerd
# 加載必要內核模塊
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 配置sysctl參數(允許橋接流量)
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sudo sysctl --system
# 啟動并啟用containerd
sudo systemctl enable --now containerd

4. 添加Kubernetes軟件源

導入GPG密鑰并添加Kubernetes APT源:

sudo apt update
sudo apt install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt update

5. 安裝Kubernetes核心組件

安裝kubelet、kubeadm、kubectl并鎖定版本(避免自動升級):

sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl  # 鎖定版本

二、初始化Kubernetes集群

主節點上執行kubeadm init命令,指定集群參數(如API服務器地址、Pod網絡CIDR):

sudo kubeadm init \
  --apiserver-advertise-address=192.168.1.100 \  # 主節點IP
  --pod-network-cidr=10.244.0.0/16 \            # Pod網絡CIDR(需與網絡插件匹配)
  --service-cidr=10.96.0.0/12 \                 # Service網絡CIDR(默認)
  --image-repository registry.aliyuncs.com/google_containers \  # 國內鏡像加速
  --kubernetes-version v1.28.0  # 指定Kubernetes版本

初始化完成后,會輸出kubeadm join命令(用于工作節點加入集群),請妥善保存。

三、配置kubectl

將主節點的admin.conf復制到當前用戶的.kube目錄,用于管理集群:

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

四、部署網絡插件

Kubernetes需要網絡插件實現Pod間通信,常見插件及部署步驟如下:

1. Flannel(輕量級Overlay網絡)

Flannel通過VXLAN技術實現跨節點Pod通信,適合小型集群:

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

驗證插件狀態:

kubectl get pods -n kube-system  # 查看flannel相關Pod是否處于Running狀態

2. Calico(高性能三層網絡,支持網絡策略)

Calico提供更豐富的網絡功能(如網絡策略、BGP路由),適合生產環境:

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

若需調整配置(如啟用IP-in-IP模式),可修改Calico的ConfigMap:

kubectl edit cm -n calico-system calico-config

3. Weave Net(簡單易用,自修復網絡)

Weave Net無需額外配置,自動發現節點:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

五、驗證網絡配置

  1. 檢查節點狀態

    kubectl get nodes
    

    所有節點應處于Ready狀態。

  2. 測試Pod網絡連通性: 創建測試Pod并訪問外部網絡:

    kubectl run nginx --image=nginx --restart=Never --rm -it -- /bin/sh
    # 在Pod內執行
    apk add --no-cache curl  # Debian基礎鏡像可能無curl,需安裝
    curl http://www.google.com  # 驗證是否能訪問外部網絡
    
  3. 測試Pod間通信: 創建兩個Pod并互相訪問:

    kubectl run pod1 --image=busybox --restart=Never -- /bin/sh -c "while true; do sleep 3600; done"
    kubectl run pod2 --image=busybox --restart=Never -- /bin/sh -c "while true; do sleep 3600; done"
    # 獲取Pod IP
    POD1_IP=$(kubectl get pod pod1 -o jsonpath='{.status.podIP}')
    POD2_IP=$(kubectl get pod pod2 -o jsonpath='{.status.podIP}')
    # 在pod1中ping pod2
    kubectl exec -it pod1 -- ping $POD2_IP
    

六、可選:配置防火墻規則

若系統啟用了ufw(Uncomplicated Firewall),需允許Kubernetes相關端口:

sudo ufw allow 6443/tcp    # Kubernetes API服務器
sudo ufw allow 10250/tcp   # kubelet API
sudo ufw allow 10255/tcp   # kubelet只讀API
sudo ufw allow 2379:2380/tcp  # etcd集群通信
sudo ufw allow 179/tcp     # Calico BGP(若使用Calico)
sudo ufw allow 4789/udp    # Calico VXLAN
sudo ufw reload

通過以上步驟,即可在Debian系統上完成Kubernetes網絡配置。需根據實際需求選擇網絡插件,并參考插件官方文檔調整高級配置(如Calico的BGP、Flannel的性能優化)。

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