温馨提示×

centos部署k8s的网络配置技巧

小樊
57
2025-05-05 04:15:57
栏目: 智能运维

在CentOS上部署Kubernetes(k8s)网络时,以下是一些关键步骤和技巧:

1. 环境准备

  • 关闭防火墙
    systemctl stop firewalld
    systemctl disable firewalld
    
  • 关闭SELinux
    setenforce 0
    sed -i 's/SELINUX.*/SELINUXdisabled/' /etc/selinux/config
    
  • 禁止swap分区
    swapoff -ased -i '/swap/s///#/g' /etc/fstab
    

2. 配置静态IP

  • 编辑网络接口配置文件,例如 /etc/sysconfig/network-scripts/ifcfg-eth0,设置静态IP地址、子网掩码和网关。
    DEVICE=eth0
    BOOTPROTO=static
    IPADDR=192.168.1.100
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    ONBOOT=yes
    
  • 保存文件并退出编辑器,然后重启网络服务:
    systemctl restart network
    

3. 配置主机名和hosts文件

  • 使用 hostnamectl 命令设置主机名:
    hostnamectl set-hostname k8s-master
    
  • 在每个节点上编辑 /etc/hosts 文件,添加集群中所有节点的IP地址和主机名:
    192.168.1.100 k8s-master
    192.168.1.101 k8s-node1
    192.168.1.102 k8s-node2
    

4. 安装网络插件

  • Flannel
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
  • Calico
    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    

5. 验证网络配置

  • 检查网络连接:
    ping 8.8.8.8
    ping 114.114.114.114
    
  • 检查集群状态:
    kubectl get nodes
    kubectl get pods -n kube-system
    

6. 配置内核参数

  • 编辑 /etc/sysctl.d/k8s.conf 文件,添加以下内核参数:
    net.bridge.bridge-nf-call-ip6tables=1
    net.bridge.bridge-nf-call-iptables=1
    net.ipv4.ip_forward=1
    
  • 使配置生效:
    sysctl --system
    

7. 时间同步

  • 安装并配置NTP服务以同步时间:
    yum install ntpdate
    ntpdate time.windows.com
    

8. 部署Kubernetes集群

  • 初始化Master节点
    kubeadm init --apiserver-advertise-address 192.168.1.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version 1.22.15 --service-cidr 10.96.0.0/12 --pod-network-cidr 10.244.0.0/16
    
  • 加入Worker节点: 在Master节点上获取Join命令,并在每个Worker节点上运行:
    kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:abcdef123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
    

9. 配置网络策略

  • 创建NetworkPolicy资源以控制Pod之间的网络通信:
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: test-network-policy
      namespace: default
    spec:
      podSelector:
        matchLabels:
          role: db
      policyTypes:
      - Ingress
      - Egress
      ingress:
      - from:
        - ipBlock:
            cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
      namespaceSelector:
        matchLabels:
          project: myproject
      podSelector:
        matchLabels:
          role: frontend
      ports:
      - protocol: TCP
        port: 6379
      egress:
      - to:
        - ipBlock:
            cidr: 10.0.0.0/24
        ports:
        - protocol: TCP
          port: 5978
    
  • 应用NetworkPolicy:
    kubectl apply -f networkpolicy_01.yaml
    

通过以上步骤,您可以在CentOS上成功配置Kubernetes集群的网络。请根据您的实际网络环境和需求调整IP地址和DNS设置。

0