文档首页 > > 用户指南> 网络管理> 集群内访问(ClusterIP)

集群内访问(ClusterIP)

分享
更新时间: 2020/05/18 GMT+08:00

集群内访问表示工作负载暴露给同一集群内其他工作负载访问的方式,可以通过“集群内部域名”访问。

集群内部域名格式为“<自定义的服务名称>.<工作负载所在命名空间>.svc.cluster.local:<端口号>”,例如“nginx.default.svc.cluster.local:80”

访问通道、容器端口与访问端口映射如图1所示。

图1 集群内访问

通过控制台操作

您可以在创建工作负载时通过CCE控制台设置Service访问方式,如下:

  1. 参考创建无状态负载(Deployment)创建有状态负载(StatefulSet),在“工作负载访问设置”步骤,单击添加服务

    • 访问类型:选择“集群内访问 ( ClusterIP )”
    • Service名称:自定义服务名称,可与工作负载名称保持一致。
    • IPv6:默认不开启,开启后服务的集群内IP地址(ClusterIP)变为IPv6地址,具体请参见如何通过CCE搭建IPv4/IPv6双栈集群?。该功能仅在1.15及以上版本的混合集群中显示。
    • 端口配置:
      • 协议:请根据业务的协议类型选择。
      • 容器端口:工作负载程序实际监听的端口,需用户确定。nginx程序实际监听的端口为80。
      • 访问端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问工作负载时使用,端口范围为1-65535,可任意指定。
    图2 访问类型为集群内访问 ( ClusterIP )

  2. 单击“下一步”进入“高级设置”页面,直接单击“创建”
  3. 单击“查看工作负载详情”,在“访问方式”页签中获取访问地址,例如10.247.74.100:2。
  4. 登录工作负载所在集群的任意节点,登录方法请参见登录Linux弹性云服务器
  5. 使用curl命令访问工作负载验证工作负载是否可以正常访问。您可以通过IP或者域名的方式来验证。

    • 方式一:通过IP地址验证。

      curl 10.247.74.100:2

      其中10.247.74.100:2为步骤3中获取的访问地址。

      回显如下表示工作负载可正常访问。

      <html>
      <head>
      <title>Welcome to nginx!</title>
      <style>
          body {
              width: 35em;
              margin: 0 auto;
              font-family: Tahoma, Verdana, Arial, sans-serif;
          }
      </style>
      </head>
      <body>
      <h1>Welcome to nginx!</h1>
      <p>If you see this page, the nginx web server is successfully installed and
      working. Further configuration is required.</p>
      
      <p>For online documentation and support please refer to
      <a href="http://nginx.org/">nginx.org</a>.<br/>
      Commercial support is available at
      <a href="http://nginx.com/">nginx.com</a>.</p>
      
      <p><em>Thank you for using nginx.</em></p>
      </body>
      </html>
    • 方式二:通过域名验证。

      curl nginx.default.svc.cluster.local:2

      其中nginx.default.svc.cluster.local步骤3中获取的域名访问地址。

      回显如下表示工作负载可正常访问。

      <html>
      <head>
      <title>Welcome to nginx!</title>
      <style>
          body {
              width: 35em;
              margin: 0 auto;
              font-family: Tahoma, Verdana, Arial, sans-serif;
          }
      </style>
      </head>
      <body>
      <h1>Welcome to nginx!</h1>
      <p>If you see this page, the nginx web server is successfully installed and
      working. Further configuration is required.</p>
      
      <p>For online documentation and support please refer to
      <a href="http://nginx.org/">nginx.org</a>.<br/>
      Commercial support is available at
      <a href="http://nginx.com/">nginx.com</a>.</p>
      
      <p><em>Thank you for using nginx.</em></p>
      </body>
      </html>

通过kubectl命令行创建

您可以通过kubectl命令行设置Service访问方式。本节以nginx为例,说明kubectl命令实现集群内访问的方法。

前提条件

请参见通过kubectl或web-terminal插件连接CCE集群配置kubectl命令,使弹性云服务器连接集群。

操作步骤

  1. 登录已配置好kubectl命令的弹性云服务器。登录方法请参见登录Linux弹性云服务器
  2. 创建并编辑nginx-deployment.yaml和nginx-clusterip-svc.yaml文件。

    其中,nginx-deployment.yaml和nginx-clusterip-svc.yaml为自定义名称,您可以随意命名。

    vi nginx-deployment.yaml
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: nginx
      strategy:
        type: RollingUpdate
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: nginx 
            imagePullPolicy: Always
            name: nginx
          imagePullSecrets:
          - name: default-secret
    vi nginx-ClusterIp-svc.yaml
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: nginx
      name: nginx-clusterip
    spec:
      ports:
      - name: service0
        port: 2
        protocol: TCP
        targetPort: 80
      selector:
        app: nginx
      type: ClusterIP
    表1 关键参数说明

    参数

    参数类型

    描述

    port

    Integer

    将由此服务公开的端口,对应界面上的访问端口。

    targetPort

    String

    对应界面上的容器端口。

    type

    String

    对应界面上的访问类型,必须是:

    • ClusterIP
    • NodePort
    • LoadBalancer

    默认是ClusterIP,表示“集群虚拟IP”。

  3. 创建工作负载。

    kubectl create -f nginx-deployment.yaml

    回显如下,表示工作负载已开始创建。

    deployment "nginx" created

    kubectl get po

    回显如下,工作负载状态为Running,表示工作负载已处于运行中状态。

    NAME                     READY     STATUS             RESTARTS   AGE
    etcd-0                   0/1       ImagePullBackOff   0          27m
    icagent-m9dkt            0/0       Running            0          3d
    nginx-2601814895-znhbr   1/1       Running            0          15s

  4. 创建服务。

    kubectl create -f nginx-ClusterIp-svc.yaml

    回显如下,表示服务已开始创建。

    service "nginx-clusterip" created

    kubectl get svc

    回显如下,表示服务已创建成功,CLUSTER-IP已生成。

    NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    etcd-svc          ClusterIP   None             <none>        3120/TCP   30m
    kubernetes        ClusterIP   10.247.0.1       <none>        443/TCP    3d
    nginx-clusterip   ClusterIP   10.247.200.134   <none>        80/TCP     20s

  5. 登录工作负载所在集群的任意节点,登录方法请参见登录Linux弹性云服务器
  6. 采用curl命令访问工作负载验证工作负载是否可以正常访问。您可以通过IP或者域名的方式来验证。

    • 方式一:通过IP地址验证

      curl 10.247.200.134:2

      回显如下表示工作负载可正常访问。

      <html>
      <head>
      <title>Welcome to nginx!</title>
      <style>
          body {
              width: 35em;
              margin: 0 auto;
              font-family: Tahoma, Verdana, Arial, sans-serif;
          }
      </style>
      </head>
      <body>
      <h1>Welcome to nginx!</h1>
      <p>If you see this page, the nginx web server is successfully installed and
      working. Further configuration is required.</p>
      
      <p>For online documentation and support please refer to
      <a href="http://nginx.org/">nginx.org</a>.<br/>
      Commercial support is available at
      <a href="http://nginx.com/">nginx.com</a>.</p>
      
      <p><em>Thank you for using nginx.</em></p>
      </body>
      </html>
    • 方式二:通过域名验证

      curl nginx-clusterip.default.svc.cluster.local:2

      回显如下表示工作负载可正常访问。

      <html>
      <head>
      <title>Welcome to nginx!</title>
      <style>
          body {
              width: 35em;
              margin: 0 auto;
              font-family: Tahoma, Verdana, Arial, sans-serif;
          }
      </style>
      </head>
      <body>
      <h1>Welcome to nginx!</h1>
      <p>If you see this page, the nginx web server is successfully installed and
      working. Further configuration is required.</p>
      
      <p>For online documentation and support please refer to
      <a href="http://nginx.org/">nginx.org</a>.<br/>
      Commercial support is available at
      <a href="http://nginx.com/">nginx.com</a>.</p>
      
      <p><em>Thank you for using nginx.</em></p>
      </body>
      </html>

工作负载创建完成后设置

您可以在工作负载创建完成后对Service进行配置,此配置对工作负载状态无影响,且实时生效。具体操作如下:

  1. 登录CCE控制台,在左侧导航栏中选择“工作负载 > 无状态 ( Deployment )”,在工作负载列表页单击要设置Service的工作负载名称。
  2. “访问方式”页签,单击“添加Service”。
  3. “添加Service”页面,访问类型选择“集群内访问 ( ClusterIP )”
  4. 设置集群内访问参数。

    • Service名称:自定义服务名称,可与工作负载名称保持一致。
    • 集群名称:工作负载所在集群的名称,此处不可修改。
    • 命名空间:工作负载所在命名空间,此处不可修改。
    • 关联工作负载:要添加Service的工作负载,此处不可修改。
    • 端口配置:
      • 协议:请根据业务的协议类型选择。
      • 容器端口:工作负载程序实际监听的端口,需用户确定。nginx程序实际监听的端口为80。
      • 访问端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问工作负载时使用,端口范围为1-65535,可任意指定。

  5. 单击“创建”。工作负载已添加“集群内访问 ( ClusterIP )”的服务。

更新Service

您可以在添加完Service后,更新此Service的端口配置,操作步骤如下:

  1. 登录CCE控制台,在左侧导航栏中选择“资源管理 > 网络管理”,在Service页签下,选择对应的集群和命名空间,单击需要更新端口配置的Service后的“更新”。
  2. “更新Service”页面,访问类型选择“集群内访问 ( ClusterIP )”
  3. 更新集群内访问参数。

    • Service名称:您创建的Service名称,此处不可修改。
    • 集群名称:工作负载所在集群的名称,此处不可修改。
    • 命名空间:工作负载所在命名空间,此处不可修改。
    • 关联工作负载:要添加Service的工作负载,此处不可修改。
    • 端口配置:
      • 协议:请根据业务的协议类型选择。
      • 容器端口:工作负载程序实际监听的端口,需用户确定。nginx程序实际监听的端口为80。
      • 访问端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问工作负载时使用,端口范围为1-65535,可任意指定。

  4. 单击“更新”,工作负载已更新Service。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问