centos安装k8s的网络配置
导读:CentOS 上 Kubernetes 网络配置实操指南 一 前置网络与系统设置 关闭交换分区并永久禁用:执行命令:swapoff -a,并将 /etc/fstab 中所有包含 swap 的行注释,避免 kubelet 启动失败。 内核网...
CentOS 上 Kubernetes 网络配置实操指南
一 前置网络与系统设置
- 关闭交换分区并永久禁用:执行命令:swapoff -a,并将 /etc/fstab 中所有包含 swap 的行注释,避免 kubelet 启动失败。
- 内核网络参数与转发:创建 /etc/sysctl.d/k8s.conf,写入
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
执行 sysctl --system 使配置生效。 - 主机名与解析:使用 hostnamectl 设置唯一主机名(如 k8s-master、k8s-node1),并在 /etc/hosts 中写入所有节点的 IP-主机名 映射,保证节点互通。
- 时间同步:安装并同步时间(如 ntpdate time.windows.com),避免证书校验与组件通信异常。
- 防火墙与 SELinux(测试/实验环境常用做法):执行 systemctl stop firewalld & & systemctl disable firewalld;将 /etc/selinux/config 中 SELINUX=enforcing 改为 SELINUX=disabled 并重启或执行 setenforce 0。生产环境请改为精细化放行策略。
二 容器运行时与 kubelet 基础配置
- 安装容器运行时(以 Docker 为例):添加 Docker YUM 源并安装 docker-ce、docker-ce-cli、containerd.io,启动并设置开机自启。
- 配置 cgroup 驱动:编辑 /etc/docker/daemon.json,设置 “exec-opts”: [“native.cgroupdriver=systemd”],随后 systemctl daemon-reload & & systemctl restart docker。
- 安装 kubeadm/kubelet/kubectl:添加 Kubernetes YUM 源,安装对应版本组件,执行 systemctl enable --now kubelet。
- 初始化控制平面(示例):
kubeadm init --apiserver-advertise-address < Master_IP> \ –image-repository registry.aliyuncs.com/google_containers \ –kubernetes-version v1.22.15 \ –service-cidr 10.96.0.0/12 \ –pod-network-cidr 10.244.0.0/16
说明:service-cidr 与 pod-network-cidr 需与所选 CNI 插件规划保持一致。 - 配置 kubectl:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
三 安装 CNI 网络插件
- Flannel(推荐用于快速上手与中小规模集群)
部署命令:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
适用场景:通用 VXLAN 覆盖网络,部署简单;如需自定义后端或网卡,可编辑清单中的 Backend 与 Interface 字段。 - Calico(支持网络策略与大规模生产)
部署命令:kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
适用场景:需要 NetworkPolicy、跨节点高性能与灵活路由策略;如需自定义 Pod 网段,修改清单中的 CALICO_IPV4POOL_CIDR。
四 验证与常见问题
- 基础连通性验证:
查看节点与系统 Pod:kubectl get nodes、kubectl get pods -A;等待 kube-flannel 或 calico 相关 Pod 就绪。
运行测试应用:
kubectl create deployment nginx --image=nginx:1.25
kubectl expose deployment nginx --port=80
kubectl run -it --rm busybox --image=busybox:1.36 --restart=Never – nslookup nginx
若解析与访问正常,则网络基本就绪。 - 常见故障排查要点:
- Pod 处于 Init/ContainerCreating:检查 kubelet 与 containerd/docker 状态、节点污点与 taints、镜像拉取是否成功。
- Flannel/Calico Pod CrashLoopBackOff:查看日志(如 kubectl logs -n kube-system ),确认 pod-network-cidr 与清单配置一致,节点网卡选择正确。
- Service 不通:核对 service-cidr 与 kube-proxy 运行状态,排查 iptables/ipvs 规则与云厂商安全组/ACL。
- 节点 NotReady:确认 CNI 插件已成功部署、内核模块(如 bridge、br_netfilter)已加载、系统参数 ip_forward 与 bridge-nf-call-iptables 已开启。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos安装k8s的网络配置
本文地址: https://pptw.com/jishu/766044.html
