centos

centos k8s部署怎样进行网络策略配置

小樊
37
2025-11-01 21:31:49
栏目: 智能运维

CentOS上Kubernetes网络策略配置指南

1. 前置准备

在配置网络策略前,需完成以下基础步骤:

2. 网络策略核心概念

3. 常见网络策略示例

示例1:默认拒绝所有入站流量(最小权限起点)

若需强制所有Pod默认拒绝入站流量,可创建以下策略(作用于当前命名空间内所有Pod):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny-ingress
  namespace: default  # 替换为目标命名空间
spec:
  podSelector: {}  # 匹配所有Pod
  policyTypes:
  - Ingress  # 仅控制入站流量

应用后,仅显式允许的流量可通过。

示例2:允许同一命名空间内特定Pod通信

若需允许带有app: frontend标签的Pod访问带有app: backend标签的Pod的8080端口(TCP),可创建以下策略:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: backend  # 作用于带有app: backend标签的Pod
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend  # 来自带有app: frontend标签的Pod
    ports:
    - protocol: TCP
      port: 8080

应用命令:kubectl apply -f allow-frontend-to-backend.yaml

示例3:允许Pod访问外部IP块

若需允许带有app: db标签的Pod访问外部10.0.0.0/24网段的3306端口(TCP),可创建以下策略:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-db-to-external
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: db
  policyTypes:
  - Egress  # 仅控制出站流量
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24  # 允许的外部IP段
    ports:
    - protocol: TCP
      port: 3306

此策略允许db Pod访问外部数据库服务。

示例4:组合策略(入站+出站)

若需允许app: user-service的Pod:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: combined-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: user-service
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - protocol: TCP
      port: 80
  egress:
  - to:
    - ipBlock:
        cidr: 192.168.1.0/24
    ports:
    - protocol: TCP
      port: 443

4. 应用与验证网络策略

注意事项

0
看了该问题的人还看了