【发布时间】:2020-06-26 22:16:45
【问题描述】:
在 Kubernetes 中,Pod 默认分配有单个 NIC,而在 AWS EKS 中,如果我们使用 AWS-CNI 插件(默认提供),我们会获得分配给 pod 的私有 IP 地址,该地址来自分配给 EC2 实例(被管节点)的底层 ENA 接口的辅助私有 IP 地址池。 我正在使用 Multus CNI 插件为 EKS 上的 POD 分配多个接口。我能够将辅助接口关联到 macvlan、ipvlan、主机设备(直通)类型的 pod。
现在,我想将辅助接口与 使用 AWS-CNI 的 pod 相关联,以便我们获得 pod 的私有 IP 地址,该地址可在 VPC 中路由-子网。 不幸的是,当我使用上述配置创建 pod 时出现以下错误:
Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "8afa07a666201b50fad5c773e2aa0b8221eb4e9e0dd0a7cd944e4633684dd0c6" network for pod "samplepod-2": NetworkPlugin cni failed to set up pod "samplepod-2_default" network: Multus: [default/samplepod-2]: error adding container to network "multus-aws-cni-network": delegateAdd: error invoking DelegateAdd - "aws-cni": error in getting result from AddNetwork: add cmd: failed to assign an IP address to container
那么,Multus CNI 是否支持 AWS-CNI 类型?
这是我的网络附件定义:
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: multus-aws-cni-network
spec:
config: '{
"cniVersion":"0.3.1",
"type":"aws-cni"
}'
这是我的 Pod 定义:
apiVersion: v1
kind: Pod
metadata:
name: samplepod-2
annotations:
k8s.v1.cni.cncf.io/networks: multus-aws-cni-network
spec:
containers:
- name: samplepod
command: ["/bin/ash", "-c", "trap : TERM INT; sleep infinity & wait"]
image: alpine
在托管节点上,我们有 aws-cni :
ls /opt/cni/bin
aws-cni aws-cni-support.sh bridge cnitool dhcp flannel host-device host-local ipvlan loopback macvlan multus noop portmap ptp sample tuning vlan
【问题讨论】:
-
您是否检查过 Multus pod 的日志中是否有更多信息?
标签: amazon-web-services docker kubernetes kubernetes-pod amazon-eks