全面解析容器编排技术 Kubernetes
Posted 架构精进之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全面解析容器编排技术 Kubernetes相关的知识,希望对你有一定的参考价值。
name: my-service
selector:
app: my-app
type: ClusterIP
ports:
- name: http
port: 80
targetPort: 8080
protocol: TCP
上面的示例定义了一个 ClusterIP Service。ClusterIP 上端口 80 的流量将转发到 Pod 上的 8080 端口 (targetPort 配置项)上,携带 app: my-app
标签的 Pod 将被添加到 Service 中作为作为服务的可用节点。
常见使用场景:
4.2 Service—NodePort 服务暴露集群内部服务的暴露。
NodePort 在固定端口号上公开向集群外部暴露服务,它允许从集群外部访问该服务,在集群外部需要使用集群的 IP 地址和 NodePort 指定的端口才能访问。
创建 NodePort Service 将在集群中的每个 Node 上开放该端口。
创建 NodePort Service 的同时还会自动创建一个 ClusterIP 类型的 Service,NodePort 会将端口上的流量路由给 ClusterIP` 类型的 Service。
常见使用场景:
4.3 Ingress 服务暴露可以使用 NodePort 快速设置开发,测试环境的服务或在其上公开 TCP 或 UDP 服务,但是对于公开 HTTP 服务来说 NodePort 不是一个的理想选择,因为其使用的都是非 HTTP 标准的端口。
Ingress 实际上是与 Service 完全不同的资源,算是 Service 上面的一层代理,通常在 Service 前使用 Ingress 来提供 HTTP 路由配置。它让我们可以设置外部 URL、基于域名的虚拟主机、SSL 和负载均衡。
为了让 Ingress 资源⼯作,集群必须有⼀个正在运⾏的 Ingress 控制器。与 Controller-manager 控制器不同,Ingress 控制器不是随集群⾃动启动的,可以选择不同外部组件来做 Ingress 控制器。
比如:nginx-ingress,它使用 nginx 服务器作为反向代理来把流量路由给后面的 Service。
常见使用场景:
5. Kubernetes 在企业中的应用可以处理 http,https 请求的流量,并且可以处理多个域名的流量。一个 IP 可以暴露多个应用,支持同域名不同 uri,支持证书等功能。使用场景比较广泛。
无论是中小型企业,还是大型互联网为了提高资源利用率,实现降本增效,利用 Kubernetes 构建一套自动化运维环境已成为最佳选择。
下图是企业服务云平台正在实现的云上架构能力的一幅蓝图,其中服务容器化作为云平台基础中的基础能力。在容器的编排和管理上最基础能力上实现扩容、限流等可操作 api 和日志、监控等可观测的 api。上层能力层可通过这些 api 提供服务构建,部署,流量控制等功能。
可见 Kubernetes 在整个架构图中重要的位置。
从容器编排管理的实现细节来看,如下图,经过 7 层负载,请求会打到一组 Ingress 控制器上,由于容器的 ip 会经常变动,所以 Ingress 会向上屏蔽掉变动,到达了 Ingress 请求就由 Kubernetes 来控制了,Kubernetes 会将此请求路由到相应服务的某个 Pod 上,同一个服务会有多个 Pod,这些 Pod 也会分部在不容物理机上。目前贝壳采用 Eureka 注册,每个 Pod 对应的服务节点,都会在 Eureka 上注册, 如果服务 A 需要调用服务 B,则请求到服务 A 的 pod 后,会从 Eureka 上寻找服务 B 的 Pod 的节点(目前通过 Eureka+DNS 来实现)拿到上游服务 Pod 信息后就直接调用服务 B 某一个 Pod 上的服务了。
希望今天的讲解对大家有所帮助,谢谢!
Thanks for reading!
关注公众号,免费领学习资料
如果您觉得还不错,欢迎关注和转发~
云原生容器技术 4 云原生容器技术概要介绍-容器编排技术基础-Kubernetes
以上是关于全面解析容器编排技术 Kubernetes的主要内容,如果未能解决你的问题,请参考以下文章
容器技术Docker K8s 4 容器编排技术基础-Kubernetes
技术解析系列 | PouchContainer CRI的设计与实现
精彩回顾 | 利用Dynatrace自动化和智能可视化增强Kubernetes的可用性