溫馨提示×

Ubuntu Kubernetes網絡配置如何實現

小樊
49
2025-10-06 03:27:05
欄目: 智能運維

Ubuntu上Kubernetes網絡配置實現指南

在Ubuntu上配置Kubernetes網絡需完成基礎集群部署、網絡插件安裝、網絡策略配置連通性驗證四大核心步驟,以下是詳細操作流程:

一、準備工作:安裝Kubernetes基礎組件

  1. 更新系統包
    執行sudo apt update && sudo apt upgrade -y,確保系統軟件包為最新版本。

  2. 安裝Docker容器運行時
    Kubernetes依賴容器運行時,推薦使用Docker(也可選擇containerd):

    sudo apt install -y docker.io
    sudo systemctl enable --now docker  # 啟用并啟動Docker服務
    
  3. 安裝Kubernetes核心組件
    添加Kubernetes官方APT倉庫并安裝kubeadm(集群初始化工具)、kubelet(節點代理)、kubectl(命令行工具):

    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
    sudo apt install -y kubelet kubeadm kubectl
    sudo apt-mark hold kubelet kubeadm kubectl  # 鎖定組件版本,避免意外升級
    

二、初始化Kubernetes Master節點

  1. 初始化集群
    使用kubeadm初始化Master節點,必須指定--pod-network-cidr參數(與后續網絡插件的Pod網段一致,常見值為10.244.0.0/16192.168.0.0/16):

    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    

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

  2. 配置kubectl
    將集群管理員配置復制到用戶目錄,使當前用戶具備集群操作權限:

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  3. 驗證Master節點狀態
    執行kubectl get nodes,此時Master節點應處于NotReady狀態(需等待網絡插件部署后變為Ready)。

三、安裝網絡插件(核心步驟)

Kubernetes需通過網絡插件實現Pod跨節點通信,以下是主流插件的安裝指南:

1. Calico(企業級,支持網絡策略)

Calico是基于BGP的三層網絡插件,適用于中大規模生產環境,支持精細的Pod網絡策略控制。

  • 安裝步驟
    下載Calico官方YAML清單(適配最新版本):
    curl -O https://docs.projectcalico.org/v3.26/manifests/calico.yaml
    
    (可選)修改Pod網段:若集群Pod網段非默認的192.168.0.0/16,需編輯calico.yaml,搜索CALICO_IPV4POOL_CIDR并修改為集群實際網段(如10.244.0.0/16)。
    部署Calico組件:
    kubectl apply -f calico.yaml
    
  • 驗證
    查看Calico Pod狀態:kubectl get pods -n calico-system,所有Pod應為Running狀態。

2. Flannel(輕量級,Overlay網絡)

Flannel是入門級網絡插件,配置簡單,適合中小規模集群或開發測試環境,采用Overlay網絡(VXLAN/Host-GW)實現通信。

  • 安裝步驟
    下載Flannel YAML清單:
    curl -O https://raw.githubusercontent.com/flannel-io/flannel/v0.22.0/Documentation/kube-flannel.yml
    
    (可選)切換為Host-GW后端(提升同局域網性能):編輯kube-flannel.yml,搜索net-conf.json,將Backend.Typevxlan改為host-gw。
    部署Flannel組件:
    kubectl apply -f kube-flannel.yml
    
  • 驗證
    查看Flannel Pod狀態:kubectl get pods -n kube-flannel,所有Pod應為Running狀態。

3. Cilium(高性能,eBPF加速)

Cilium基于eBPF技術,提供極致網絡性能(如百萬級Pod并發),支持高級安全策略(如L7流量過濾),適合大規?;蚋咝阅軋鼍埃ㄈ绺哳l交易、大流量電商)。

  • 前提條件
    節點內核版本≥5.4(Ubuntu 20.04+默認滿足),禁用rp_filter(避免eBPF流量被攔截):
    echo "net.ipv4.conf.all.rp_filter=0" | sudo tee -a /etc/sysctl.conf
    echo "net.ipv4.conf.default.rp_filter=0" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    
  • 安裝步驟
    安裝Helm(Kubernetes包管理工具):
    curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
    
    添加Cilium Helm倉庫并更新:
    helm repo add cilium https://helm.cilium.io/
    helm repo update
    
    部署Cilium組件:
    helm install cilium cilium/cilium --namespace kube-system \
      --set k8sServiceHost=<K8S_API_SERVER_IP> \  # 替換為集群API Server IP
      --set k8sServicePort=6443                   # 默認6443
    
  • 驗證
    查看Cilium Pod狀態:kubectl get pods -n kube-system -l k8s-app=cilium,所有Pod應為Running狀態;執行kubectl exec -n kube-system cilium-xxxx -- cilium status,輸出應顯示Status: readyEBPF: enabled。

四、驗證網絡連通性

  1. 創建測試Pod
    部署一個Nginx Pod作為測試目標:

    kubectl run nginx --image=nginx --port=80 --rm -it --restart=Never
    

    執行ip a查看Pod IP(如10.244.1.2),退出Pod(輸入exit)。

  2. 跨節點Pod通信
    在另一個節點創建Busybox Pod,嘗試訪問Nginx Pod的IP:

    kubectl run test-pod --image=busybox --rm -it --restart=Never -- wget -qO- http://<Nginx_Pod_IP>
    

    若返回Nginx歡迎頁面(如<!DOCTYPE html>),則說明網絡連通性正常。

五、可選:配置網絡策略(增強安全性)

網絡策略用于控制Pod之間的通信(如限制某命名空間的Pod只能訪問特定端口),以Calico為例:

  1. 創建網絡策略
    以下策略允許default命名空間內所有Pod互相訪問,拒絕外部訪問:

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: default-deny-all
      namespace: default
    spec:
      podSelector: {}  # 匹配所有Pod
      policyTypes:
      - Ingress  # 控制入站流量
      - Egress   # 控制出站流量
      ingress: []  # 禁止所有入站流量
      egress: []   # 禁止所有出站流量
    

    應用策略:kubectl apply -f network-policy.yaml。

  2. 測試策略效果
    嘗試從default命名空間外的Pod訪問default命名空間內的Pod,應無法訪問;若需允許特定流量,可修改ingress/egress字段(如允許來自kube-system命名空間的流量)。

通過以上步驟,即可在Ubuntu上完成Kubernetes網絡配置,實現Pod跨節點通信及安全策略控制。需根據實際場景選擇合適的網絡插件(如生產環境推薦Calico/Cilium,開發測試推薦Flannel)。

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