为Pod配独占网卡和固定IP及独立子网、安全组(1) kubectl get enicfg NAME TYPE PRIORITY SELECTOR PHASE AGE elasticnetworkinterfaceconfigurationsample fixed 100 {"namespaceSelector":{"matchLabels":{"foo":"bar"}},"podSelector":{"matchLabels":{"foo":"bar"}}} Ready 3m31s 可选步骤2:为命名空间添加匹配的标签 创建EniCfg自定义资源后,可为指定命名空间增加匹配的标签,以确保与EniCfg的selector.namespaceSelector匹配。如下所示,为test命名空间添加与示例EniCfg匹配的标签foobar。 plaintext kubectl label namespaces test foobar 预期输出如下: plaintext kubectl get ns test showlabels NAME STATUS AGE LABELS test Active 11s foobar,kubernetes.io/metadata.nametest 步骤3:创建使用独占ENI的Pod Pod创建时,Cubecni将根据Pod的标签以及所在命名空间的标签,查找匹配的EniCfg资源。如果没EniCfg资源匹配,将使用默认的安全组和子网。如果有EniCfg匹配,Cubecni将按照该资源定义的配置来申请ENI。 除了EniCfg外,可通过Pod注解方式声明独占ENI使用的子网和安全组,Pod注解优先级高于EniCfg,注解定义如下: 键 值 cubecni.eni.securityGroups 值为安全组ID列表,表示在已有安全组的基础上,额外增加的安全组,最终生效的安全组数量<5 cubecni.eni.additionalSecurityGroups 值为安全组ID列表,如sgxxx,sgaaa cubecni.eni.subnets 值为子网ID列表 通过打标方式,声明Pod使用独占ENI,此时,Cubecni会创建类型为Eni的自定义资源来描述Pod所占用的ENI。如下所示: 1. 创建名为demo的Pod,打标cubecni.exclusiveEni"true"声明该Pod使用独占ENI plaintext cat << EOF kubectl apply f apiVersion: apps/v1 kind: Deployment metadata: name: demo spec: replicas: 1 selector: matchLabels: app: demo template: metadata: labels: app: demo cubecni.exclusiveEni: "true"
来自: