溫馨提示×

Ubuntu K8S網絡配置方法

小樊
36
2025-10-14 07:42:26
欄目: 智能運維

Ubuntu環境下Kubernetes網絡配置指南

在Ubuntu上配置Kubernetes(K8s)網絡需完成基礎環境準備、集群初始化、網絡插件安裝驗證四大核心步驟,確保Pod、節點及服務間通信正常。

一、基礎環境準備

1. 關閉防火墻(生產環境需配置精確規則)

sudo ufw disable  # 臨時關閉
# 生產環境建議用iptables/nftables替代,或配置K8s需要的端口規則

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

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

3. 配置內核參數(支持網絡轉發)

編輯/etc/sysctl.d/k8s.conf,添加以下內容:

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

應用配置:

sudo sysctl --system

4. 安裝Docker(容器運行時)

sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker

5. 安裝Kubernetes組件(kubelet/kubeadm/kubectl)

sudo apt update
# 添加Kubernetes倉庫密鑰
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# 添加Kubernetes倉庫
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節點)

在Master節點執行初始化命令,指定Pod網絡CIDR(需與后續網絡插件兼容,如Calico常用192.168.0.0/16):

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

初始化完成后,記錄輸出的kubeadm join命令(用于Worker節點加入集群)。

三、配置kubectl(Master節點)

將集群配置復制到當前用戶目錄,便于后續管理:

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

四、安裝網絡插件(關鍵步驟)

K8s要求使用CNI插件實現Pod間虛擬網絡,常見選項如下:

1. Calico(推薦,高性能+網絡策略)

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

驗證插件狀態:

kubectl get pods -n calico-system  # 應顯示所有Pod為Running狀態

2. Flannel(簡單易用,適合中小集群)

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

3. 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-test --image=nginx --port=80
    
  • 查看Pod IP:
    kubectl get pods -o wide
    
  • 進入Pod測試跨節點通信(需替換為實際Pod IP):
    kubectl exec -it nginx-test -- /bin/sh
    ping <另一Pod-IP>
    

六、可選:配置網絡策略(Calico示例)

通過網絡策略限制Pod間通信(如僅允許my-app命名空間的Pod訪問default命名空間的app=my-app標簽Pod):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: restrict-access
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: my-app
  policyTypes:
  - Ingress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          name: my-app
    ports:
    - protocol: TCP
      port: 80

應用策略:

kubectl apply -f network-policy.yaml

注意事項

  • 網絡插件需與--pod-network-cidr匹配(如Calico默認支持192.168.0.0/16,Flannel默認支持10.244.0.0/16);
  • 生產環境建議開啟防火墻并配置精確規則,允許K8s組件(如kube-apiserver、kube-controller-manager)的端口通信;
  • 多節點集群需在所有Worker節點執行初始化時記錄的kubeadm join命令。

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