tencent cloud

容器服务

动态与公告
产品动态
公告
产品发布记录
产品简介
产品概述
产品优势
产品架构
应用场景
产品功能
基本概念
原生 Kubernetes 名词对照
容器服务高危操作
地域和可用区
开源组件
购买指南
购买指引
购买 TKE 标准集群
购买原生节点
购买超级节点
快速入门
新手指引
快速创建一个标准集群
入门示例
容器应用部署 Check List
集群配置
标准集群概述
集群管理
网络管理
存储管理
节点管理
GPU 资源管理
远程终端
应用配置
工作负载管理
服务和配置管理
组件和应用管理
弹性伸缩
容器登录方式
可观测配置
运维可观测性
成本洞察和优化
调度配置
调度组件概述
资源利用率优化调度
业务优先级保障调度
Qos 感知调度
安全和稳定性
容器服务安全组设置
身份验证和授权
应用安全
多集群管理
计划升级
备份中心
云原生服务指南
云原生 etcd
Prometheus 监控服务
TKE Serverless 集群指南
TKE 注册集群指南
实践教程
集群
Serverless 集群
调度
安全
服务部署
网络
发布
日志
监控
运维
Terraform
DevOps
弹性伸缩
容器化
微服务
成本管理
混合云
AI
故障处理
节点磁盘爆满排障处理
节点高负载排障处理
节点内存碎片化排障处理
集群 DNS 解析异常排障处理
集群 Kube-Proxy 异常排障处理
集群 API Server 网络无法访问排障处理
Service&Ingress 网络无法访问排障处理
Service&Ingress 常见报错和处理
Nginx Ingress 偶现 Connection Refused
CLB Ingress 创建报错排障处理
Pod 网络无法访问排查处理
Pod 状态异常与处理措施
授权腾讯云售后运维排障
CLB 回环问题
API 文档
History
Introduction
API Category
Making API Requests
Elastic Cluster APIs
Resource Reserved Coupon APIs
Cluster APIs
Third-party Node APIs
Relevant APIs for Addon
Network APIs
Node APIs
Node Pool APIs
TKE Edge Cluster APIs
Cloud Native Monitoring APIs
Scaling group APIs
Super Node APIs
Other APIs
Data Types
Error Codes
TKE API 2022-05-01
常见问题
TKE 标准集群
TKE Serverless 集群
运维类
隐患处理
服务类
镜像仓库类
远程终端类
事件类
资源管理类
服务协议
TKE Service Level Agreement
TKE Serverless Service Level Agreement
联系我们
词汇表

概述

PDF
聚焦模式
字号
最后更新时间: 2024-12-23 11:41:09

Service 基本概念

用户在 Kubernetes 中可以部署各种容器,其中一部分是通过 HTTP、HTTPS 协议对外提供七层网络服务,另一部分是通过 TCP、UDP 协议提供四层网络服务。而 Kubernetes 定义的 Service 资源就是用来管理集群中四层网络的服务访问。
Kubernetes 的 ServiceTypes 允许指定 Service 类型,默认为 ClusterIP 类型。ServiceTypes 的可取值以及行为描述如下:
可取值
说明
ClusterIP
通过集群的内部 IP 暴露服务。当您的服务只需要在集群内部被访问时,请使用该类型。该类型为默认的 ServiceType。
NodePort
通过每个集群节点上的 IP 和静态端口(NodePort)暴露服务。NodePort 服务会路由到 ClusterIP 服务,该 ClusterIP 服务会自动创建。通过请求 <NodeIP>:<NodePort>,可从集群的外部访问该 NodePort 服务。除了测试以及非生产环境以外,不推荐在生产环境中直接通过集群节点对外甚至公网提供服务。从安全上考虑,使用该类型会直接暴露集群节点,容易受到攻击。通常认为集群节点是动态的、可伸缩的,使用该类型使得对外提供服务的地址和集群节点产生了耦合。
LoadBalancer
使用腾讯云的负载均衡器,可以向公网或者内网暴露服务。负载均衡器可以路由到 NodePort 服务,或直接转发到处于 VPC-CNI 网络条件下的容器中。
ClusterIP 和 NodePort 类型的 Service,在不同云服务商或是自建集群中的行为表现通常情况下相同。而 LoadBalancer 类型的 Service,由于使用了云服务商的负载均衡进行服务暴露,云服务商会围绕其负载均衡的能力提供不同的额外功能。例如,控制负载均衡的网络类型,后端绑定的权重调节等,详情请参见 Service 功能文档

服务访问方式

根据上述 ServiceTypes 定义。您可以使用腾讯云容器服务 TKE 提供的以下四种服务访问方式:
访问方式
Service 类型
说明
公网
LoadBalancer
使用 Service 的 Loadbalance 模式,公网 IP 可直接访问到后端的 Pod,适用于 Web 前台类的服务。
创建完成后的服务在集群外可通过负载均衡域名或 IP + 服务端口访问服务,集群内可通过服务名 + 服务端口访问服务。
注意:腾讯云负载均衡(Cloud Load Balancer)实例已于2023年03月06日升级了架构,升级后公网负载均衡以域名的方式提供服务。VIP 随业务请求动态变化,控制台不再展示 VIP 地址。请参见 域名化公网负载均衡上线公告
新注册的腾讯云用户默认使用升级后的域名化负载均衡。
存量用户可以选择继续使用原有的负载均衡,不受升级影响。如果您需要升级负载均衡服务,则需要同时升级腾讯云产品 CLB 以及 TKE,否则 TKE 中的所有公网类型的 Service/Ingress 同步将可能受到影响。CLB 升级操作详情请参见域名化负载均衡升级指南;TKE 升级 Service/Ingress 组件版本,请通过提交工单 联系我们。
VPC 内网
LoadBalancer
使用 Service 的 Loadbalance 模式,指定注解service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-xxxxxxxx,即可通过内网 IP 直接访问到后端的 Pod。
创建完成后的服务在集群外可通过负载均衡域名或 IP + 服务端口访问服务,集群内可通过服务名 + 服务端口访问服务。
主机端口访问
NodePort
提供一个主机端口映射到容器的访问方式,支持 TCP、UDP、Ingress。可用于业务定制上层 LB 转发到 Node。
创建完成后的服务可以通过云服务器 IP + 主机端口访问服务。
仅集群内访问
ClusterIP
使用 Service 的 ClusterIP 模式,自动分配 Service 网段中的 IP,用于集群内访问。数据库类等服务如 MySQL 可以选择集群内访问,以保证服务网络隔离。
创建完成后的服务可以通过服务名 + 服务端口访问服务。

负载均衡相关概念

Service 工作原理

腾讯云容器集群中的 Service Controller 组件负责用户 Service 资源的同步。当用户创建、修改或删除 Service 资源时、集群节点或 Service Endpoints 出现变化时、组件容器发生飘移重启时,组件都会对用户的 Service 资源进行同步。
Service Controller 会依照用户 Service 资源的描述创建对应的负载均衡资源,并对监听器及其后端进行配置。当用户删除集群 Service 资源时,也会回收对应负载均衡资源。

Service 生命周期管理

Service 对外服务的能力依赖于负载均衡所提供的资源,服务资源管理也是 Service 的重要工作之一。Service 在资源的生命周期管理中会使用以下标签:
tke-createdBy-flag = yes:标识该资源是由容器服务创建。
若有此标签,Service 会在销毁时删除对应资源。
若无此标签,Service 会在销毁时,仅删除负载均衡内的监听器资源,而不删除负载均衡自身。
tke-clusterId = <ClusterId>:标识该资源被哪一个 Cluster 所使用的。
若 ClusterId 正确,则Service 会在销毁时,删除对应标签。
说明
若用户使用了已有负载均衡,则 Service 仅会使用该负载均衡,而不会删除该负载均衡。
若用户在负载均衡上面开启了删除保护,或者使用私有连接,则删除 Service 时,不会删除该负载均衡。
当 LoadBalancer 类型的 Service 集群资源被创建时,对应负载均衡的生命周期就开始了。直到 Service 资源被删除或是负载均衡被重建时,负载均衡的生命周期就结束了。在此期间负载均衡会持续根据 Service 资源的描述进行同步。当用户切换 Service 的网络访问时,例如公网 > VPC 内网、VPC 内网 > 公网、VPC 子网切换、更换使用的已有负载均衡,此类操作都会涉及到负载均衡的重建或销毁。LoadBalancer 类型 Service 工作原理如下图所示:



Service 注意事项

Service 有一个字段:.spec.externalTrafficPolicy。kube-proxy 基于 spec.internalTrafficPolicy 的设置来过滤路由的目标服务端点。当它的值设为 Local 时,只会选择节点本地的服务端点。当它的值设为 Cluster 或缺省时,Kubernetes 会选择所有的服务端点。更多请参见 Kubernetes 文档
如果 Service 使用了 Local 方式,当 Pod 从 TKE 节点调度到超级节点,或者从超级节点调度到 TKE 节点的时候会出现断流,因为 Service 仅会选择本地的服务端点。

Service 高危操作

使用传统型负载均衡(已不推荐使用)。
修改或者删除由容器服务添加的负载均衡标签,再购买新的负载均衡并恢复其标签。
通过负载均衡控制台,修改由容器服务所管理负载均衡的监听器名称。

Service 功能

Service 相关操作及功能如下,您可参考以下文档进一步了解:

参考资料

您也可以参考开源文档 Kubernetes Service,了解关于 Service 的更多信息。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈