在EDAS中的同一个K8s集群中创建多个服务后,如果集群内部服务间需要互相访问,无法通过公网或者私网负载均衡SLB实现访问,此时您可以为服务添加服务Service,以实现集群内部服务间的访问。本文介绍如何添加服务Service以及集群内部服务间的访问验证。

背景信息

在EDAS中的容器服务Kubernetes集群中创建的应用往往都是由多个运行相同镜像的一组Pod组成,Pod虽然拥有独立的IP, 但Pod会快速地创建和删除,所以通过访问一个个可能被删除的Pod来访问应用是不现实的。

在应用中添加Service能很好的解决上述问题。Service有一个固定IP地址(即ClusterIP),Service将访问该应用的流量转发给Pod,并为这些Pod提供负载均衡。

操作步骤

  1. 登录EDAS控制台
  2. 按需执行以下任一操作来进入应用的详情页面:
    • 在左侧导航栏选择资源管理 > 容器服务K8s集群(或资源管理 > Serverless K8s集群),在顶部菜单栏选择地域并在页面上方选择命名空间,在容器服务K8s集群Serverless K8s集群页面单击集群ID,然后在集群详情页面的应用列表区域单击具体应用名称。
    • 在左侧导航栏单击应用列表,在顶部菜单栏选择地域并在页面上方选择命名空间,在集群类型下拉列表中选择容器服务/Serverless K8s集群,然后单击目标应用名称。
  3. 应用总览页面的访问方式配置区域,单击服务(Service)右侧的加号图标。
    说明 如果您已经配置过Service,则在此处会显示服务名称和IP信息,您可单击编辑图标修改Service的端口和协议类型,或可单击删除图标删除Service。
  4. 服务(Service)对话框,设置服务名、服务端口、容器端口和协议类型,然后单击确认。
    创建Service
    参数 描述
    服务名 自定义设置服务名称,服务名称必须唯一,不能和已有服务名称重复。

    支持小写字母、数字和短划线(-),且必须以字母开头,字母或数字结尾,长度范围为2~32个字符。

    服务端口 服务前端端口,通过该端口访问应用,可设置范围为1~65535。
    容器端口 进程监听的端口。一般由程序定义,可设置范围为1~65535。
    协议 服务协议,包含TCPUDP,默认值为TCP
    说明
    为应用添加服务Service时,您需要关注以下两点:
    • 系统支持在同一个Service里,添加多个端口映射。但是如果您需要将不同的端口映射,设置为不同的服务名称,则可以重复执行步骤3~步骤4,设置多个Service。
    • 在同一个服务Service,添加多个端口映射时,服务端口和协议两两之间不得完全一样。如80|8080|TCP80|8081|TCP,这两个端口映射无法保存,提示端口映射存在重复项

结果验证

在当前应用中添加服务Service后,您可以登录K8s集群中的任一Pod,在Pod内根据Service固定IP地址访问应用。

本示例验证的是访问Web服务,如果是其他类型服务,验证方法不尽相同。

  1. 登录容器服务管理控制台
  2. 在左侧导航栏,单击集群
  3. 集群列表页面,选择目标集群,在操作列下单击更多 > 通过CloudShell管理集群
    在页面下方自动打开集群所关联的CloudShell。打开集群关联的CloudShell时,系统会自动加载集群的kubeconfig文件。您可以通过kubectl直接管理您的集群。
  4. 执行以下命令,查询集群中所有的Pod。
    kubectl get pods
    查询出的Pod列表如下:
    NAME                                             READY   STATUS             RESTARTS   AGE
    store-pre-****-group-1-19-****7569b-f7***        1/1     Running            0          28h
    store-prod-***duct-group-1-1-****7f894-zh***     1/1     Running            0          28h
  5. 执行以下命令,登录任一Pod。
    kubectl exec -it store-prod-***duct-group-1-1-****7f894-zh*** /bin/sh
  6. 执行以下命令,根据Service固定IP访问应用。
    wget 10.XX.XX.XX:8081    //IP地址和服务端口需要和您的Service信息保持一致。
    返回如下类似日志:
    Connecting to 10.XX.XX.XX:8081 (10.XX.XX.XX:8081)
    index.html           100% |*******************************************************|  2203  0:00:00 ETA
    说明 本示例验证的是访问Web服务,如果是其他类型服务,回显日志不相同,请以实际情况为准。