首页主机资讯Ubuntu K8S网络配置方法

Ubuntu K8S网络配置方法

时间2025-10-14 18:56:04发布访客分类主机资讯浏览557
导读:Ubuntu环境下Kubernetes网络配置指南 在Ubuntu上配置Kubernetes(K8s)网络需完成基础环境准备、集群初始化、网络插件安装及验证四大核心步骤,确保Pod、节点及服务间通信正常。 一、基础环境准备 1. 关闭防火墙...

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命令。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu K8S网络配置方法
本文地址: https://pptw.com/jishu/726145.html
Ubuntu K8S性能优化策略 Ubuntu K8S部署指南

游客 回复需填写必要信息