云服务器内容精选

  • 通过控制台创建工作负载类型的容器网络配置 登录CCE控制台。 单击集群名称进入集群,在左侧选择“配置中心”,选择“网络配置”页签。 集群中存在默认容器网络配置default-network,对所有未配置自定义容器网络配置的Pod生效,“概览”页面的网络信息中的“默认容器子网”即为default-network中的容器子网。 查看“自定义容器网络配置”,单击“添加自定义容器网络配置”,在弹窗中配置容器子网和安全组等信息。 名称:自定义容器网络配置名称,最长支持253个字符。default-network、default、mgnt0、mgnt1四个名称为系统预留,请勿使用。 关联资源类型:自定义容器网络配置关联的资源类型,详情请参见表1。创建命名空间类型的容器网络配置请选择“工作负载”类型。 容器子网:请选择子网。若无子网可选请单击后方的“创建子网”进行创建,创建完成后单击刷新按钮。最多可选择 20 个子网。 关联安全组:默认为容器ENI安全组,您也可以选择单击后方的“创建安全组”进行创建,创建完成后单击刷新按钮。最多可选择5个安全组。 图3 创建工作负载类型的容器网络配置 完成基本配置后单击“创建”,创建完成后页面自动返回到自定义容器网络配置列表,可以看到新创建的容器网络配置已在列表中。 图4 容器网络配置列表 在创建工作负载时,可选择自定义的容器网络配置。 在左侧导航栏中选择“工作负载”,在右侧选择“无状态负载”页签。 单击页面右上角“创建工作负载”,在“高级配置”中选择“网络配置”页签,并选择是否开启指定容器网络配置。 选择一个已有的容器网络配置。如果没有可用的网络配置,可单击“添加自定义容器网络配置”进行创建。 图5 选择容器网络配置 工作负载其余信息都配置完成后,单击“创建工作负载”。 返回到“配置中心”,在容器网络配置列表里可以看到创建的容器网络配置关联的资源名称。 图6 查看容器网络配置关联的资源
  • 删除网络配置 您可以查看新添加网络配置的YAML,也可以对新添加的配置进行“删除”操作。 在删除网络配置时,需先删除该配置所对应的容器,否则将删除失败。 执行以下命令筛选集群中使用该配置的Pod(其中example为示例配置名称,请自行替换): kubectl get po -A -o=jsonpath="{.items[?(@.metadata.annotations.cni\.yangtse\.io/network-status=='[{\"name\":\"example\"}]')]['metadata.namespace', 'metadata.name']}" 返回结果中包含了该配置关联的Pod名字及命名空间。 删除创建该Pod的Owner,其Owner可能为Deployment、StatefulSet、DaemonSet或Job类型的工作负载。
  • 操作场景 CCE Turbo集群支持以命名空间或工作负载粒度设置容器所在的容器子网及安全组,该功能通过名为NetworkAttachmentDefinition的CRD资源实现。如您想为指定的命名空间或工作负载配置指定的容器子网和安全组,可创建自定义容器网络配置(NetworkAttachmentDefinition),并将该容器网络配置与相应的命名空间或工作负载关联,进而实现业务的子网划分或业务安全隔离的述求。 目前容器网络配置(NetworkAttachmentDefinition)支持关联的资源类型对比如下: 表1 关联资源类型对比 维度 容器网络配置(NetworkAttachmentDefinition)关联的资源类型 命名空间 工作负载 容器网络划分维度说明 容器网络配置关联的命令空间下创建的所有工作负载使用相同的子网配置跟安全组配置 指定了相同容器网络配置的工作负载使用相同的子网配置跟安全组配置 支持的集群版本 仅在CCE Turbo集群中可用,且集群为1.23.8-r0、1.25.3-r0及以上版本 仅在CCE Turbo集群中可用,且集群为1.23.11-r0、1.25.6-r0、1.27.3-r0及以上版本 约束限制 不同容器网络配置之间的命名空间不可重复 只能指定未关联命名空间的自定义容器网络配置
  • 约束与限制 仅默认容器网络配置 default-network 支持开启网卡预热,使用自定义容器网络配置的Pod的创建速度相对使用默认容器网络配置的Pod会稍慢一些,因此不适用于极速Pod弹性场景。 默认容器网络配置 default-network 不支持删除。 已开启固定IP的工作负载,如果需要关联新的容器网络配置,Pod重建时,固定IP功能会失效。请删除工作负载并释放已经固定的IP,然后重新创建工作负载。 如需删除创建的自定义容器网络配置(NetworkAttachmentDefinition),请先删除对应的命名空间下使用该配置创建的Pod(带有名为“cni.yangtse.io/network-status”的annotation),详情请参见删除网络配置。
  • 通过控制台创建命名空间类型的容器网络配置 登录CCE控制台。 单击集群名称进入集群,在左侧选择“配置中心”,选择“网络配置”页签。 集群中存在默认容器网络配置default-network,对所有未配置自定义容器网络配置的Pod生效,“概览”页面的网络信息中的“默认容器子网”即为default-network中的容器子网。 查看“自定义容器网络配置”,单击“添加自定义容器网络配置”,在弹窗中配置容器子网和安全组等信息。 名称:自定义容器网络配置名称,最长支持253个字符。default-network、default、mgnt0、mgnt1四个名称为系统预留,请勿使用。 关联资源类型:自定义容器网络配置关联的资源类型,详情请参见表1。创建命名空间类型的容器网络配置请选择“命名空间”类型。 命名空间:请选择您需要关联的命名空间。不同容器网络配置之间关联的命名空间不可重复。若无命名空间可选请单击后方的“创建命名空间”进行创建。 容器子网:请选择子网。若无子网可选请单击后方的“创建子网”进行创建,创建完成后单击刷新按钮。最多可选择 20 个子网。 关联安全组:默认为容器ENI安全组,您也可以选择单击后方的“创建安全组”进行创建,创建完成后单击刷新按钮。最多可选择5个安全组。 图1 创建命名空间类型的容器网络配置 完成基本配置后单击“创建”,创建完成后页面自动返回到自定义容器网络配置列表,可以看到新创建的容器网络配置已在列表中。 图2 容器网络配置列表
  • 约束限制 如需要使用固定EIP或自动创建EIP功能,请提交工单申请EIP V3接口的创建和删除权限。 仅以下指定版本的CCE Turbo集群支持用户为Pod配置EIP: v1.19集群:v1.19.16-r20及以上版本 v1.21集群:v1.21.10-r0及以上版本 v1.23集群:v1.23.8-r0及以上版本 v1.25集群:v1.25.3-r0及以上版本 v1.25以上版本集群 绑定EIP的Pod,如果要被公网成功访问,需要添加放通相应请求流量的安全组规则。 单个Pod只能绑定单个EIP。 创建Pod时,可指定相关的annotation配置EIP的属性,创建完成后,更新EIP相关的annotation均无效。 与Pod关联的EIP不要通过弹性公网IP的console或API直接操作(修改名称/删除/解绑/绑定/转包周期等操作),否则可能导致EIP功能异常。 自动创建的EIP被手动删除后,会导致网络异常,需要重建Pod。
  • 检查Pod的EIP就绪 容器网络控制器会在Pod IP分配后,为Pod绑定EIP并回写分配结果至Pod的annotation(yangtse.io/allocated-ipv4-eip),Pod业务容器的启动时间可能早于EIP分配结果回写成功时间。 您可以尝试为Pod配置init container并使用downwardAPI类型的存储卷把yangtse.io/allocated-ipv4-eip的annotation通过volume挂载到init container里,并在init container中检查EIP是否已经分配成功。您可以参考以下示例配置init container。 apiVersion: v1 kind: Pod metadata: name: example annotations: yangtse.io/pod-with-eip: "true" yangtse.io/eip-bandwidth-size: "5" yangtse.io/eip-network-type: 5_bgp yangtse.io/eip-charge-mode: bandwidth yangtse.io/eip-bandwidth-name: "xxx" spec: initContainers: - name: init image: busybox:latest command: ['timeout', '60', 'sh', '-c', "until grep -E '[0-9]+' /etc/eipinfo/allocated-ipv4-eip; do echo waiting for allocated-ipv4-eip; sleep 2; done"] volumeMounts: - name: eipinfo mountPath: /etc/eipinfo volumes: - name: eipinfo downwardAPI: items: - path: "allocated-ipv4-eip" fieldRef: fieldPath: metadata.annotations['yangtse.io/allocated-ipv4-eip'] ...
  • 通过kubectl命令行设置 您可以通过对StatefulSet添加annotations来设置是否开启Pod固定EIP功能,同时需要开启随Pod创建EIP功能,如下所示。 apiVersion: apps/v1kind: StatefulSetmetadata: name: nginxspec: serviceName: nginx replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx annotations: pod.alpha.kubernetes.io/initialized: 'true' yangtse.io/static-eip: 'true' yangtse.io/static-eip-expire-no-cascading: 'false' yangtse.io/static-eip-expire-duration: 5m yangtse.io/pod-with-eip: 'true' yangtse.io/eip-bandwidth-size: '5' yangtse.io/eip-network-type: 5_bgp yangtse.io/eip-charge-mode: bandwidth yangtse.io/eip-ip-version: '4' spec: containers: - name: container-0 image: nginx:alpine resources: limits: cpu: 100m memory: 200Mi requests: cpu: 100m memory: 200Mi imagePullSecrets: - name: default-secret 表1 Pod固定EIP的annotation配置 annotation 默认值 参数说明 取值范围 yangtse.io/static-eip false 是否开启Pod固定EIP,只有StatefulSet类型的Pod或无ownerReferences的Pod支持,默认不开启。 "false"或"true" yangtse.io/static-eip-expire-duration 5m 删除固定EIP的Pod后,对应的固定EIP过期回收的时间间隔。 支持时间格式为Go time type,例如1h30m、5m。关于Go time type,请参见Go time type。 yangtse.io/static-eip-expire-no-cascading false 是否关闭StatefulSet工作负载的级联回收。 默认为false,表示StatefulSet删除后,会级联删除对应的固定EIP。如果您需要在删除StatefulSet对象后,在EIP过期回收时间内保留对应的固定EIP,用于下一次重建同名的StatefulSet再次使用对应的固定EIP,请将该参数设为true。 "false"或"true" 表2 EIP跟随Pod创建的annotation配置 annotation 默认值 参数说明 取值范围 yangtse.io/pod-with-eip false 是否需要跟随Pod创建EIP并绑定到该Pod。 "false"或"true" yangtse.io/eip-bandwidth-size 5 带宽大小,单位为Mbit/s。 默认1Mbit/s~2000Mbit/s 具体范围以各区域配置为准,详情请参见弹性公网IP控制台。 yangtse.io/eip-network-type 5_bgp 公网IP类型。 5_bgp 5_union 5_sbgp 具体类型以各区域配置为准,详情请参见弹性公网IP控制台。 yangtse.io/eip-charge-mode bandwidth 按流量计费或按带宽计费。 默认取值为traffic,表示按流量计费。 bandwidth:按带宽计费 traffic:按流量计费 yangtse.io/eip-ip-version 4 公网EIP的版本,例如IPv4,IPv6。 默认取值为4,即表示IPv4。 4 6 yangtse.io/eip-bandwidth-id 空 已有的带宽ID,填写该值时会忽略其他自动创建EIP相关的annotation。 - yangtse.io/eip-bandwidth-name Pod名称 带宽名称。 1-64个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点) 最小长度:1 最大长度:64