温馨提示×

centos如何配置k8s网络

小樊
41
2025-10-17 21:00:42
栏目: 智能运维

CentOS配置K8s网络详细步骤

1. 环境准备

  • 基础配置:确保每台节点(Master/Node)安装CentOS 7/8,配置足够的CPU、内存、硬盘资源;所有节点时间同步(安装chrony并启动:systemctl start chronyd && systemctl enable chronyd)。
  • 静态IP设置:编辑网络接口配置文件(如/etc/sysconfig/network-scripts/ifcfg-ens33),修改以下内容:
    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=<节点静态IP>  # 如192.168.1.100
    NETMASK=255.255.255.0
    GATEWAY=<网关IP>     # 如192.168.1.1
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    
    保存后重启网络服务:systemctl restart network
  • 主机名与hosts解析:用hostnamectl set-hostname <主机名>设置主机名(如Master节点设为k8s-master);编辑/etc/hosts文件,添加节点IP与主机名映射:
    192.168.1.100 k8s-master
    192.168.1.101 k8s-node1
    192.168.1.102 k8s-node2
    

2. 关闭防火墙与SELinux

  • 关闭防火墙(测试环境可临时关闭,生产环境建议配置安全规则):
    systemctl stop firewalld
    systemctl disable firewalld
    
  • 禁用SELinux(避免限制网络策略):
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    

3. 安装Kubernetes核心组件

  • 安装Docker(容器运行时,K8s推荐使用containerd,但Docker兼容性更好):
    添加Docker yum源并安装:
    cat > /etc/yum.repos.d/docker-ce.repo << EOF
    [docker-ce]
    name=Docker CE
    baseurl=https://download.docker.com/linux/centos/docker-ce/stable
    enabled=1
    gpgcheck=1
    gpgkey=https://download.docker.com/linux/centos/gpg
    EOF
    yum -y install docker-ce docker-ce-cli containerd.io
    systemctl enable docker && systemctl start docker
    
  • 安装kubelet、kubeadm、kubectl
    yum install -y kubelet kubeadm kubectl
    systemctl enable kubelet
    

4. 初始化Master节点

  • 初始化集群(指定Pod网络CIDR,需与后续网络插件配置一致):

    kubeadm init --apiserver-advertise-address=<Master静态IP> \
                 --image-repository registry.aliyuncs.com/google_containers \
                 --kubernetes-version v1.28.0 \
                 --service-cidr=10.96.0.0/12 \
                 --pod-network-cidr=10.244.0.0/16
    

    初始化完成后,会输出kubeadm join命令(用于Node节点加入集群),请保存备用。

  • 配置kubectl
    将Master节点的kubeconfig文件复制到当前用户目录:

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

5. 配置CNI网络插件

K8s依赖CNI插件实现Pod网络通信,常用插件包括Flannel(简单易用)、Calico(支持网络策略)等。

(1)Flannel插件(推荐新手)
  • 安装Flannel
    应用官方YAML配置文件(默认使用VXLAN模式,性能较好):
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
  • 验证插件状态
    检查kube-system命名空间下的Flannel Pod是否全部Running
    kubectl get pods -n kube-system -l k8s-app=flannel
    
(2)Calico插件(支持高级网络策略)
  • 下载并应用配置文件
    wget https://docs.projectcalico.org/manifests/calico.yaml
    kubectl apply -f calico.yaml
    
  • 修改Pod网络CIDR(可选)
    若初始化集群时指定了--pod-network-cidr=10.244.0.0/16,需编辑Calico配置文件(calico.yaml),找到CALICO_IPV4POOL_CIDR字段,修改为10.244.0.0/16,再重新应用。

6. 加入Node节点

在每台Node节点上运行Master节点初始化时输出的kubeadm join命令,例如:

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

等待Node节点状态变为Ready(通过kubectl get nodes查看)。

7. 验证网络配置

  • 部署测试Pod
    创建一个Nginx Pod用于网络测试:
    kubectl apply -f - <<EOF
    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
    EOF
    
  • 测试Pod间通信
    进入测试Pod,ping其他节点或Pod的IP(需提前获取目标Pod IP):
    kubectl exec -it test-pod -- /bin/sh
    ping <目标Pod/IP>
    
    若能ping通,说明网络配置成功。

8. 可选:配置网络策略(Calico示例)

若使用Calico插件,可通过NetworkPolicy限制Pod间通信。例如,允许app=db的Pod仅接受来自192.168.0.0/24网段的流量:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-db-from-specific-cidr
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: db
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 192.168.0.0/24
    ports:
    - protocol: TCP
      port: 3306

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

以上步骤覆盖了CentOS环境下K8s网络配置的核心流程,包括基础环境准备、CNI插件安装与验证。根据实际需求选择合适的插件(如Flannel适合简单场景,Calico适合需要网络策略的场景),并确保所有节点配置一致,即可实现K8s集群的网络通信。

0