Ubuntu上Kubernetes网络策略设置指南
网络策略(Network Policy)是Kubernetes实现Pod级网络隔离的核心机制,通过标签选择器定义流量规则,配合支持NetworkPolicy的网络插件(如Calico、Cilium)生效。以下是Ubuntu环境下配置Kubernetes网络策略的详细步骤及关键说明:
一、前置准备:安装支持NetworkPolicy的网络插件
Kubernetes本身不直接实现网络策略,需依赖网络插件。Calico是Ubuntu环境下常用的选择,步骤如下:
- 安装Calico网络插件:
执行以下命令部署Calico(以最新稳定版为例):
这会自动部署Calico的控制平面(如Tigera Operator)和数据平面组件(如felix、bird),确保节点间网络通信正常。kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
二、创建基础网络策略:示例与说明
网络策略通过YAML文件定义,核心字段包括podSelector(选择目标Pod)、policyTypes(策略类型)、ingress(入站规则)、egress(出站规则)。以下是常见场景示例:
1. 允许同一命名空间内指定标签Pod的入站流量
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-same-namespace
namespace: default # 指定命名空间(默认为default)
spec:
podSelector:
matchLabels:
app: myapp # 选择标签为app=myapp的Pod
policyTypes:
- Ingress # 仅控制入站流量
ingress:
- from:
- podSelector:
matchLabels:
app: myapp # 允许标签为app=myapp的Pod访问
ports:
- protocol: TCP
port: 80 # 仅允许TCP端口80
作用:同一命名空间内,仅标签为app=myapp的Pod可访问目标Pod的80端口。
2. 默认拒绝所有入站流量(强化安全)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
namespace: default
spec:
podSelector: {} # 选择所有Pod
policyTypes:
- Ingress # 仅控制入站流量
作用:默认拒绝所有入站流量,需通过其他策略显式允许必要流量(如上述allow-same-namespace),实现“默认拒绝”安全模型。
3. 允许Pod访问外部IP块(出站流量)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-external-access
namespace: default
spec:
podSelector:
matchLabels:
app: backend # 选择标签为app=backend的Pod
policyTypes:
- Egress # 仅控制出站流量
egress:
- to:
- ipBlock:
cidr: 172.17.0.0/16 # 允许访问外部IP段(如Docker默认网段)
ports:
- protocol: TCP
port: 5432 # 仅允许TCP端口5432(如PostgreSQL)
作用:允许标签为app=backend的Pod访问外部172.17.0.0/16网段的5432端口。
三、应用与管理网络策略
-
应用策略:
将上述YAML保存为文件(如network-policy.yaml),执行以下命令应用:kubectl apply -f network-policy.yaml -
验证策略:
- 查看集群中所有网络策略:
kubectl get networkpolicies --all-namespaces - 查看特定命名空间的策略详情:
kubectl describe networkpolicy-n
- 查看集群中所有网络策略:
-
删除策略:
kubectl delete -f network-policy.yaml
四、关键注意事项
- 网络插件兼容性:必须使用支持NetworkPolicy的插件(如Calico、Cilium),Flannel默认不支持,需额外配置(如Flannel+Calico集成)。
- 默认策略优先级:若未定义任何策略,集群允许所有流量;定义策略后,流量需匹配至少一条允许规则才会被放行。
- 最小权限原则:仅开放必要的端口和来源,避免过度授权(如限制仅允许特定命名空间的Pod访问数据库)。
- 策略叠加:多个策略会叠加生效,允许流量为所有适用策略允许流量的并集。
通过以上步骤,可在Ubuntu环境的Kubernetes集群中实现细粒度的网络流量控制,提升集群安全性。
以上就是关于“Ubuntu Kubernetes 网络策略如何设置”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm