Service 基本功能

最近更新时间: 2024-12-19 17:12:00

控制台操作指引

创建 Service

  1. 登录容器服务控制台,选择左侧导航栏中的集群
  2. 集群管理页面,单击需要创建 Service 的集群 ID,进入集群基本信息页。
  3. 选择服务 > Service,在 Service 页面单击新建
  4. 新建 Service 页面,根据实际需求,设置 Service 参数。关键参数信息如下:
  • 服务名称:自定义。
  • 命名空间:根据实际需求进行选择。
  • 访问设置:请参考 服务访问方式说明 进行设置。
  • Workload 绑定:引用一个存量的 Workload,或自定义标签,该 Service 会根据自定义的标签选择拥有这些标签的 Workload。
  1. 单击创建 Service,完成创建。

更新 Service

说明:

为防止 Service 在切换不同的 CLB 时发生资源异常问题,例如:CLB 可能会脱离 TKE 的管控导致资源泄漏,或无法创建出对应的 CLB 导致服务中断,TKE 对 Service 的生命周期的变更做了如下限制:

  1. 禁止服务访问方式中的公网 LB 访问与内网 LB 访问之间互相切换。
  2. 选择公网 LB 访问时,禁止切换当前 VPC 的可用区,以及其他 VPC;禁止在负载均衡器中的自动创建与使用已有之间互相切换。
  3. 选择内网 LB 访问时,禁止在负载均衡器中的自动创建与使用已有之间互相切换,禁止切换 LB 所在子网。
  4. 选择使用已有时,禁止切换成其他已有 CLB。
  5. 禁止传统型和应用型 CLB 之间的切换。

若您尝试切换以上动作,前台会做限制,后台会拦截。若您有以上切换诉求,可以尝试:

  1. 先将服务访问方式切换至仅在集群内访问或主机端口访问。
  2. 再配置成目标的参数配置。

更新配置

  1. 登录容器服务控制台,选择左侧导航栏中的集群
  2. 集群管理页面,单击集群 ID,进入集群基本信息页。
  3. 选择服务 > Service,在 Service 页面单击 Service 所在行右侧的更新访问方式
  4. 更新访问方式页面,根据实际需求进行访问设置。
  5. 设置完成后,单击更新访问方式即可。

编辑 YAML

  1. 选择服务 > Service,在 Service 页面单击 Service 所在行右侧的编辑YAML
  2. 编辑Yaml 页面,根据实际需求编辑 YAML 后单击完成即可。

删除 Service

  1. 登录容器服务控制台,选择左侧导航栏中的集群
  2. 集群管理页面,单击集群 ID,进入集群基本信息页。
  3. 选择服务> Service,在 Service 页面单击 Service 所在行右侧的删除

Kubectl 操作 Service 指引

YAML 示例

kind: Service
apiVersion: v1
metadata:
  ## annotations:
  ##   service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-xxxxxxxx ##若是创建内网访问的 Service 需指定该条 annotation
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
  type: LoadBalancer

说明:

  • kind:标识 Service 资源类型。
  • metadata:Service 的名称、Label 等基本信息。
  • metadata.annotations:Service 的额外说明,可通过该参数设置容器服务的额外增强能力。
  • spec.selector:该 Service 会根据这里标签选择器里的标签,选择拥有这些标签的 Workload。
  • spec.type:标识 Service 的被访问形式。
    • ClusterIP:在集群内部公开服务,可用于集群内部访问。
    • NodePort:使用节点的端口映射到后端 Service,集群外可以通过节点 IP:NodePort 访问。
    • LoadBalancer:使用云平台提供的负载均衡器公开服务,默认创建公网负载均衡,指定 annotations 可创建内网负载均衡。
    • ExternalName:将服务映射到 DNS,仅适用于 kube-dns1.7及更高版本。

创建 Service

  1. 参考YAML 示例,准备 Service YAML 文件。

  2. 安装 Kubectl,并连接集群。操作详情请参见 通过 Kubectl 连接集群

  3. 执行以下命令,创建 Service YAML 文件。

    kubectl create -f Service YAML 文件名称
    

    例如,创建一个文件名为 my-service.yaml 的 Service YAML 文件,则执行以下命令:

    kubectl create -f my-service.yaml
    
  4. 执行以下命令,验证创建是否成功。

    kubectl get services
    

    返回类似以下信息,即表示创建成功。

    NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
    kubernetes   ClusterIP   172.16.255.1   <none>        443/TCP   38d
    

更新 Service

方法1

执行以下命令,更新 Service。

kubectl edit service/[name]

方法2

  1. 手动删除旧的 Service。

  2. 执行以下命令,重新创建 Service。

    kubectl create/apply
    

删除 Service

执行以下命令,删除 Service。

kubectl delete service [NAME]