"深入探讨K8S核心组件与常见问题解析"

2 下载量 150 浏览量 更新于2023-12-23 收藏 6.8MB DOCX 举报
K8S学习笔记(分类整理以及一些思考) 在学习Kubernetes(K8S)的过程中,我们需要关注Master及workNode上都有哪些组件,了解Kubernetes为什么设计出一个全新的Pod概念并且Pod有特殊的组成结构,以及在使用Service时可能遇到的多端口问题和外网访问问题。同时,我们还需要考虑在什么情况下使用多个容器在同一个Pod中。 Kubernetes的核心组件关注Master及workNode上都有哪些组件。在Master节点上运行着集群管理相关的一组进程,包括etcd、kube-apiserver、kube-controller-manager、kube-scheduler和cloud-controller-manager。这些进程构成了Kubernetes的总控中心,实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控和纠错等管理功能。在每个Node上运行kubelet、kube-proxy和Container Runtime三个组件,负责对本节点上的Pod的生命周期进行管理,以及实现服务代理的功能。此外,Addons是pods和services,用于实现集群特性,常用的插件有DNS、Web UI、Container Resource Monitoring和Cluster-level logging等。 为什么Kubernetes会设计出一个全新的Pod概念并且Pod有这样特殊的组成结构?Pod是Kubernetes最小的管理单元,一个Pod中可以包含一个或多个相关容器。Pod中的容器共享网络和存储,可以通过本地的localhost进行通信,容器之间的共享也方便了它们的协同工作。Pod的设计可以更好地满足多容器应用的部署需求,同时提高了容器之间的交互效率。 在Service的使用中,可能会遇到多端口问题和外网访问问题。在Kubernetes中,Service为应用程序提供一个固定的入口地址,实现了负载均衡、容错和服务发现。然而,Service默认只支持一个端口,这可能不足以满足一些应用的需求,这时可以通过使用Ingress或者NodePort等方式来实现多端口的映射和访问。同时,如果需要从外部访问Kubernetes集群中的Service,需要考虑使用LoadBalancer或者NodePort类型的Service来实现外网访问。 最后,我们需要考虑何时在Pod中使用多个容器。在一些情况下,将多个相关联的容器组合到同一个Pod中可以减少部署和管理的复杂性。例如,一个应用程序可能需要运行多个辅助服务,这时可以将这些辅助服务作为与主应用程序相关的附加容器合并在同一个Pod中。但是需要注意的是,使用多个容器在同一个Pod中也会增加这个Pod的复杂性,需要慎重考虑。 综合上述内容,我们需要关注Kubernetes的核心组件在Master及workNode上的部署情况,了解Pod的设计和特殊的组成结构,解决Service的多端口问题和外网访问问题,以及考虑何时在Pod中使用多个容器。这些内容对于学习和理解Kubernetes架构和应用至关重要。