本页面介绍适用于 Google Kubernetes Engine (GKE) 的 Dataplane V2。
关于 Dataplane V2
Dataplane V2 基于 eBPF,并允许 Linux 节点灵活且高效地处理内核中的网络数据包。Dataplane V2 包括内置网络政策强制执行和网络政策日志记录功能,没有任何第三方插件。
如需使用网络政策日志记录功能,您必须在 GKE 集群上启用 Dataplane V2。如需查看相关说明,请参阅使用 Dataplane V2 创建集群部分。
限制
- Dataplane V2 只能在新集群中启用。现有集群无法升级为使用 Dataplane V2。
- Windows 节点不支持 Dataplane V2。
测试版的局限性
- 虽然 Dataplane V2 目前处于 Beta 版阶段,但不保证向后兼容性。当新版本的 Dataplane V2 可用时,您可能必须使用 Dataplane V2 重新创建集群。
- 目前已知某些 Kubernetes 和 GKE 功能在 Beta 版中无法使用:
- 设置了
ExternalTrafficPolicy:local
且由使用hostNetwork:true
运行的 Pod 支持的 Kubernetes 服务无法接收集群外部客户端的流量。 - 将
FromCIDR
与选择某些(不是所有)节点 IP 地址的 CIDR 范围搭配使用的 Kubernetes 网络政策不起作用。 - 不支持包括 NodeLocal DNSCache 在内的某些功能。
- 设置了
- Google Cloud Console 中没有 Dataplane V2 界面。
使用 Dataplane V2 创建 GKE 集群
您可以在使用 GKE 1.17.9 及更高版本创建新集群时启用 Dataplane V2。
gcloud
如需使用 Dataplane V2 创建新集群,请使用以下命令:
gcloud beta container clusters create cluster-name \ --enable-dataplane-v2 \ --enable-ip-alias \ --cluster-version version \ --release-channel channel-name \ {--region region-name | --zone zone-name}
替换以下内容:
API
如需使用 Dataplane V2 创建新集群,请在集群 create
请求中指定 networkConfig
对象的 datapathProvider
字段。
以下 JSON 代码段显示了启用 Dataplane V2 所需的配置:
"cluster":{
"initialClusterVersion":"version",
"ipAllocationPolicy":{
"useIpAliases":true
},
"networkConfig":{
"datapathProvider":"ADVANCED_DATAPATH"
},
"releaseChannel":{
"channel":"channel-name"
}
}
替换以下内容:
- version:您的集群版本,必须为 GKE 1.17.9 或更高版本。
- channel-name:包含 GKE 1.17.9 或更高版本的发布渠道。
问题排查
检查系统 Pod 的状态:
kubectl -n kube-system get pods
如果 Dataplane V2 正在运行,您将会看到具有前缀
anetd-
的 Pod 正在以HEALTHY
状态运行。anetd 是 Dataplane V2 的网络控制器。如果问题在于服务或网络政策强制执行方式,请检查
anetd
Pod 日志:kubectl -n kube-system describe pod anetd-pod
kubectl -n kube-system logs anetd-pod
将 anetd-pod 替换为之前确定的
anetd
Pod 的名称。如果 Pod 创建失败,请检查 kubelet 日志以获取相关线索:
gcloud compute ssh node -- sudo journalctl -u kubelet
将 node 替换为虚拟机实例的名称。