k8s
Contents
k8s
pod
Pod 是 Kubernetes 中可部署的最小、最基本对象。一个 Pod 代表集群中正在运行的单个进程实例。
Pod 包含一个或多个容器, 当 Pod 运行多个容器时,这些容器将作为一个实体进行管理并共用 Pod 的资源。
Pod 还包含其容器的共享网络和存储资源:
网络:系统会自动为 Pod 分配独一无二的 IP 地址。各 Pod 容器共用同一网络命名空间,包括 IP 地址和网络端口。Pod 中的各容器在 Pod 内通过 localhost 彼此通信。 存储:Pod 可以指定一组可在各容器之间共用的共享存储卷。 可以将 Pod 视为一个自成一体的独立“逻辑主机”,其中包含该 Pod 所服务于的应用的系统需求。
K8s Service
Service 服务可以为一组具有相同功能的容器应用提供一个统一的入口地址。 Service 是 k8s 用来定义和管理网络访问 Pod 的一种资源对象。不同类型的 Service 决定了应用服务的暴露方式和访问范围。
Pod 在摧毁重建时ip地址是会动态变化的,这样通过客户端直接访问不合适了,这时候就可以选择使用服务来和Pod建立连接,通过标签选择器进行适配。这样就能有效的解决了Pod ip地址动态变换的问题了。
K8s Service有四种类型
- ClusterIP (默认类型)
- 只在集群内部可访问,外部无法直接访问。
- 适合微服务之间的内部通信。
- 示例:type: ClusterIP
- NodePort
- 在每个节点(master node and worker node, all node)的指定端口开放服务,外部可以通过节点IP+端口访问服务。
- 一般用于开发、测试,或与外部负载均衡器配合使用。
- 示例:type: NodePort
- LoadBalancer Service
- 集成云服务商的负载均衡器(如 AWS ELB、GCP LB),自动分配一个外部 IP,通过该 IP 访问服务。
- 适合生产环境,需要公网访问的服务。
- 示例:type: LoadBalancer
- ExternalName
- 不真正暴露端口,而是把服务名解析为 DNS 名称(如外部数据库)。
- 适合集群内服务直接访问集群外部服务(如通过 DNS 访问外部资源)。
- 示例:type: ExternalName
headless service
为什么需要无头服务? 客户端想要和指定的的Pod直接通信 并不是随机选择 开发人员希望自己控制负载均衡的策略,不使用Service提供的默认的负载均衡的功能,或者应用程序希望知道属于同组服务的其它实例。 Headless Service使用场景 有状态应用,例如数据库
例如主节点可以对数据库进行读写操作,而其它的两个工作节点只能读,在这里客户端就没必要指定pod服务的集群地址,直接指定数据库Pod ip地址即可,这里需要绑定dns,客户端访问dns,dns会自动返回pod IP地址列表
无头服务不需要指定集群地址 无头服务适用有状态应用例如数据库 无头服务dns查询会返回pod列表,开发人员可以自定义负载均衡策略 普通Service可以通过负载均衡路由到不同的容器应用
———————————————— 版权声明:本文为CSDN博主「独步秋风」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_33326449/article/details/117401847
Author -
LastMod 0001-01-01