centos

centos如何配置k8s网络策略

小樊
32
2025-05-31 10:18:22
栏目: 智能运维

在CentOS上配置Kubernetes(k8s)网络策略,可以按照以下步骤进行:

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

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

# 按照提示配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

2. 部署网络插件

Kubernetes支持多种网络插件,如Calico、Flannel、Weave等。这里以Calico为例。

# 安装Calico
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml

3. 创建网络策略

网络策略用于定义Pod之间的通信规则。以下是一个简单的示例,限制只有同一命名空间下的Pod可以相互通信。

创建命名空间

kubectl create namespace example-namespace

创建网络策略

创建一个名为allow-same-namespace.yaml的文件,内容如下:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-same-namespace
  namespace: example-namespace
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector: {}
  egress:
  - to:
    - podSelector: {}

应用网络策略:

kubectl apply -f allow-same-namespace.yaml

4. 验证网络策略

你可以通过创建一些Pod来验证网络策略是否生效。

创建两个Pod

kubectl run pod1 --image=nginx --namespace=example-namespace
kubectl run pod2 --image=nginx --namespace=example-namespace

测试Pod之间的通信

pod1中尝试访问pod2

kubectl exec -it pod1 -- wget -O- http://pod2.example-namespace.svc.cluster.local

如果配置正确,你应该能够看到pod2的响应。如果无法访问,可能是网络策略阻止了通信。

5. 调整网络策略

根据需要,你可以调整网络策略以允许或拒绝特定的通信。例如,只允许来自特定标签的Pod之间的通信。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-specific-label
  namespace: example-namespace
spec:
  podSelector:
    matchLabels:
      app: example-app
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          access: "true"
  egress:
  - to:
    - podSelector:
        matchLabels:
          access: "true"

应用新的网络策略:

kubectl apply -f allow-specific-label.yaml

通过以上步骤,你可以在CentOS上配置Kubernetes网络策略,以控制Pod之间的通信。

0
看了该问题的人还看了