溫馨提示×

k8s安裝后centos如何配置網絡

小樊
52
2025-10-01 01:02:28
欄目: 智能運維

CentOS系統下Kubernetes網絡配置指南

在CentOS上完成Kubernetes(k8s)安裝后,網絡配置是確保集群正常運行的關鍵步驟,主要包括基礎環境準備、網絡插件安裝網絡策略配置三部分。

一、基礎環境準備

在配置網絡前,需完成以下基礎設置,避免網絡沖突或權限問題:

  1. 關閉防火墻
    Kubernetes集群內部通信無需防火墻攔截,關閉后可簡化配置(生產環境建議按需開放端口)。
    systemctl stop firewalld && systemctl disable firewalld
    
  2. 禁用SELinux
    SELinux的強制訪問控制可能阻礙Pod間通信,需臨時關閉并永久禁用。
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    
  3. 關閉Swap分區
    Kubernetes要求節點禁用Swap,否則可能導致Pod調度異常。
    swapoff -a
    sed -i '/swap/s/^/#/' /etc/fstab  # 永久禁用
    
  4. 配置靜態IP
    動態IP會導致節點IP變化,影響集群穩定性。編輯網絡接口配置文件(如/etc/sysconfig/network-scripts/ifcfg-ens33,接口名以ip a命令為準):
    TYPE=Ethernet
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=192.168.1.100  # 節點靜態IP
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=114.114.114.114
    
    重啟網絡服務使配置生效:
    systemctl restart network
    
  5. 配置主機名與hosts文件
    統一節點主機名便于識別,編輯/etc/hosts文件添加集群節點信息:
    hostnamectl set-hostname k8s-master  # 主節點
    # 或 hostnamectl set-hostname k8s-node1  # 子節點
    echo "192.168.1.100 k8s-master" >> /etc/hosts
    echo "192.168.1.101 k8s-node1" >> /etc/hosts
    
  6. 同步時間
    節點時間不一致會導致證書驗證失敗或調度異常,安裝chrony并啟動:
    yum install -y chrony && systemctl enable chronyd && systemctl start chronyd
    

二、安裝CNI網絡插件

Kubernetes依賴CNI(Container Network Interface)插件實現Pod間通信,常用插件包括Flannel(簡單易用)和Calico(高性能、支持網絡策略)。

1. Flannel插件(推薦新手)

Flannel提供overlay網絡(VXLAN模式),適合小規模集群,配置簡單:

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

驗證插件狀態:

kubectl get pods -n kube-system | grep flannel  # 應顯示"Running"狀態
2. Calico插件(推薦生產環境)

Calico采用純三層轉發(無overlay),性能更優且支持網絡策略(NetworkPolicy),適合大規模集群:

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

驗證插件狀態:

kubectl get pods -n kube-system | grep calico  # 應顯示"Running"狀態

三、配置網絡策略(可選,但推薦)

網絡策略用于控制Pod間的訪問權限,提升集群安全性。以下是一個允許同一命名空間內所有Pod互相訪問的示例:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-same-namespace
  namespace: default  # 作用于default命名空間
spec:
  podSelector: {}  # 匹配所有Pod
  policyTypes:
  - Ingress  # 控制入站流量
  - Egress   # 控制出站流量
  ingress:
  - from:
    - podSelector: {}  # 允許同一命名空間內的Pod訪問
  egress:
  - to:
    - podSelector: {}  # 允許訪問同一命名空間內的Pod

應用策略:

kubectl apply -f network-policy.yaml

四、驗證網絡配置

  1. 檢查節點狀態
    確保所有節點處于Ready狀態:
    kubectl get nodes
    
  2. 測試Pod通信
    創建一個測試Pod并獲取其IP,從另一個Pod訪問:
    kubectl run test-pod --image=nginx --restart=Never --rm -it -- /bin/sh
    # 在Pod內執行:ping <另一個Pod的IP> 或 curl <另一個Pod的IP>:80
    

通過以上步驟,可完成CentOS系統下Kubernetes的網絡配置,確保集群內Pod間通信正常。根據實際需求選擇合適的網絡插件,并通過NetworkPolicy強化網絡安全。

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