容器服务 Service 基本功能

1. 登录 容器服务控制台,选择左侧导航栏中的集群。2. 在集群管理页面,单击需要创建 Service 的集群 ID,进入集群基本信息页。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、创建 Service

3. 选择服务与路由 > Service,在 Service 页面单击新建。如下:

4. 在新建服务与路由页面,根据实际需求,设置 Service 参数。关键参数信息如下:

·服务名称:自定义。

·命名空间:根据实际需求进行选择。

·访问设置:请参考 服务访问方式说明 进行设置。

·(选填)高级设置:

·External TrafficPolicy:

·Cluster:默认均衡转发到工作负载的所有 Pod。

·Local:能够保留来源 IP,并可以保证公网、VPC 内网访问(LoadBalancer)和主机端口访问(NodePort)模式下流量仅在本节点转发。Local 转发使部分没有业务 Pod 存在的节点健康检查失败,可能存在流量不均衡的转发的风险。

注意:说明:

注意:如果 Service 使用了 Local 方式,当 Pod 从 TKE 节点调度到超级节点,或者从超级节点调度到 TKE 节点的时候会出现断流,因为 Service 仅会选择本地的服务端点。

·Session Affinity:如果要确保来自特定客户端的连接每次都传递给同一个 Pod,你可以通过设置 Service 的.spec.sessionAffinity为 ClientIP 来设置基于客户端 IP 地址的会话亲和性(默认为 None)。

·Workload 绑定:引用一个存量的 Workload,或自定义标签,该 Service 会根据自定义的标签选择拥有这些标签的 Workload。

注意:说明:

5. 单击创建 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 所在行右侧的更多 > 删除。如下:

六、YAML 示例

kind: ServiceapiVersion: v1metadata: ## annotations: ## service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-xxxxxxxx ##若是创建内网访问的 Service 需指定该条 annotation name: my-servicespec: 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 可创建内网负载均衡。

·默认用户可以创建的内网或外网的 CLB 数量分别是100个,如果你需要使用的数量超过100时,可通过 在线咨询 提升负载均衡 CLB 的配额。

·Service 和 CLB 之间配置的管理和同步是由以 CLB ID 为名字的 LoadBalancerResource 类型的资源对象,请勿对该 CRD 进行任何操作,否则容易导致 Service 失效。

·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) AGEkubernetes ClusterIP 172.16.255.1 <none> 443/TCP 38d

八、方法1

执行以下命令,更新 Service。

kubectl edit service/[name]

九、方法2

1. 手动删除旧的 Service。

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

kubectl create/apply -f [YAML FILE]

十、删除 Service

执行以下命令,删除 Service。

kubectl delete service [NAME]

十一、注意事项

对于 LoadBalancer 类型的 Service,TKE 在对账过程中会给该 Service 加上一个随机注解 service.cloud.tencent.com/client-token,该注解用于实现创建 LoadBalancer 的幂等控制。

通常情况下该注解和一个具体的 LoadBalancer 一一对应,如果用户需要复制 Service 的内容用来重新创建一个 LoadBalancer,在 apply yaml 前,用户需要在复制的 yaml 中删除掉该注解,否则可能造成创建异常,甚至后续可能造成误删除老的 LoadBalancer。

赞 (0)
上一篇 4天前
下一篇 4天前