centos

centos上k8s的网络策略设置

小樊
65
2025-09-02 01:45:50
栏目: 智能运维

在CentOS上配置Kubernetes(k8s)的网络策略,可以确保集群内的Pod之间按照预期的规则进行通信。以下是详细的步骤和示例:

1. 安装Kubernetes

首先,确保你已经在CentOS上安装了Kubernetes集群。你可以使用kubeadm来快速搭建一个单节点或多节点的集群。

# 安装kubeadm, kubelet和kubectl
sudo yum install -y kubeadm kubelet kubectl --disable-gpg-check

# 启动kubelet服务
sudo systemctl enable kubelet
sudo systemctl start kubelet

# 初始化单节点集群
sudo kubeadm init --pod-network-cidr=10.244.0.0/16

# 按照提示完成初始化过程

2. 部署网络插件

为了支持网络策略,你需要部署一个支持网络策略的网络插件。常用的网络插件有Calico、Cilium等。这里以Calico为例:

# 下载Calico的YAML文件
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml

# 等待Calico Pod启动
kubectl get pods -n kube-system | grep calico

3. 创建网络策略

网络策略定义了哪些Pod可以相互通信以及如何通信。以下是一个简单的示例,限制只有来自特定标签的Pod才能访问目标Pod。

示例:限制访问

假设你有一个名为web的Deployment,你希望只有带有标签role=frontend的Pod才能访问它。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend
spec:
  podSelector:
    matchLabels:
      app: web
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 80

保存上述内容到一个文件中,例如allow-frontend.yaml,然后应用它:

kubectl apply -f allow-frontend.yaml

示例:限制出站访问

假设你希望限制web Deployment中的Pod只能访问特定的外部IP地址。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: restrict-egress
spec:
  podSelector:
    matchLabels:
      app: web
  policyTypes:
  - Egress
  egress:
  - to:
    - ipBlock:
        cidr: 192.168.1.0/24
    ports:
    - protocol: TCP
      port: 80

保存上述内容到一个文件中,例如restrict-egress.yaml,然后应用它:

kubectl apply -f restrict-egress.yaml

4. 验证网络策略

你可以通过以下命令查看网络策略的状态:

kubectl get networkpolicy

你也可以通过尝试访问Pod来验证网络策略是否生效。例如,尝试从一个没有role=frontend标签的Pod访问web Deployment中的Pod,应该会被拒绝。

总结

通过以上步骤,你可以在CentOS上配置Kubernetes的网络策略,确保集群内的Pod之间按照预期的规则进行通信。根据你的具体需求,可以创建更复杂的网络策略来满足不同的安全需求。

0
看了该问题的人还看了