阿里云首页 弹性容器实例 相关技术圈

常见问题

本文介绍自建Kubernetes集群部署VNode来使用ECI的常见问题。

云上服务如何访问线下IDC的Pod IP?

如果您使用高速通道(专线)来打通线下和云上网络,则线下IDC和云上服务之间可以通过边界路由协议BGP相互学习路由规则,IDC可以将Pod IP的路由信息通过BGP广播给云上服务,实现云上服务可以访问线下IDC的Pod IP。具体操作,请参见配置BGP

线下IDC服务如何访问云上的Pod IP?

如果您使用高速通道(专线)来打通线下和云上网络,配置BGP后,线下IDC和云上服务之间可以相互学习路由规则,云上的Pod IP的路由信息可以部署CCM实现自动同步。更多关于CCM的信息,请参见Cloud Controller Manager

自建K8s集群部署CCM后,可以将K8s的Pod IP路由信息同步到VPC路由表。部署CCM时,请注意以下事项:

  • 需要将K8s集群节点的providerID修改为<region-id>.<ecs-id>的格式,例如cn-shanghai.i-ankb8zjh2nzchf*******

  • 确保Pod IP与节点的Pod CIDR相匹配,即该节点上的Pod IP地址均在该节点定义的Pod CIDR网段内。例如:Calico IPAM需要配置为host-local才能使Pod IP与节点的Pod CIDR相匹配。

    Pod CIDR网段可以在节点的spec信息中查看:

    spec:
      podCIDR: 172.23.XX.0/26
      podCIDRs:
      - 172.23.XX.0/26
      providerID: cn-shanghai.i-ankb8zjh2nzchfxxxxxxx

内网域名无法解析怎么办?

问题描述

云上和线下服务由于无法解析内网域名,导致无法进行业务调用,包括:

  • 云上服务无法解析IDC内网域名

  • IDC服务无法解析云上PrivateZone域名

解决方案

线下IDC和阿里云VPC分别属于两套网络环境,如果部署在线下IDC和云上的服务都需要通过DNS解析进行业务间调用,您可以配置PrivateZone云解析实现云上和线下服务通过内网域名方式实现相互访问。具体操作,请参见PrivateZone&VPN网关联动实现云上访问云下资源

线下IDC服务如何访问云上服务?

问题描述

线下IDC服务通过专线无法访问阿里云服务,例如IDC通过专线无法访问云数据库RDS、对象存储OSS、日志服务SLS等。

解决方案

您可以通过以下两种方式解决问题,推荐您使用方案一。

  • 方案一

    在云上配置云服务域名,边界路由器VBR将通过边界路由协议BGP发布路由给线下IDC。具体操作,请参见访问云服务

  • 方案二

    配置IDC添加静态路由,将100.64.0.0/10路由到专线。

使用自建的容器镜像仓库无法拉取镜像,怎么办?

问题描述

使用自建的容器镜像仓库无法拉取镜像,报错如下:

VK常见问题

解决方案

上述问题可能是因为镜像仓库使用的自签发的证书,拉取镜像时无法通过证书认证导致。在创建Pod时,您可以添加以下Annotation来跳过证书认证:

"k8s.aliyun.com/insecure-registry": "<host-name>"

例如:假设私有镜像仓库中的Nginx镜像的链接为test.example.com/test/nginx:apline,则可以添加"k8s.aliyun.com/insecure-registry": "test.example.com"的Annotation来跳过证书认证。

如何调度Pod到VNode?

您可以根据业务需要选择合适的方式将Pod调度到VNode,即在ECI上运行Pod。常用方式如下:

    为什么DaemonSet Pod调度到VNode后一直是Pending状态?

    由于VNode不是真实节点,并不支持DaemonSet,因此在创建DaemonSet时,您需要配置反亲和性调度策略,禁止DaemonSet Pod调度到VNode上。配置示例如下:
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: type
                operator: NotIn
                values:
                - virtual-kubelet

    使用配置Pod Label的方式调度Pod到VNode,为什么调度失败?

    使用配置Pod Label的方式调度Pod到VNode时,需要确保K8s版本为1.16及以上版本。VK常见问题2