kubernetes(k8s),k8s kubeadm

一、Kubernetes 是 Google 团队发起并维护的基于 Docker 的开源容器集群管理系统,它不仅支持常见的云平台,而且支持内部数据中心。建于 Do

b208ba1b162740a984e1970442b7763a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717774675&x-signature=sW1iBOTnQczyRWG1DjlUWHwbltQ%3D

一、Kubernetes 是 Google 团队发起并维护的基于 Docker 的开源容器集群管理系统,它不仅支持常见的云平台,而且支持内部数据中心。

基于Docker构建的Kubernetes可以构建容器调度服务。其目的是使用户能够通过Kubernetes 集群来管理云容器集群,而无需执行复杂的设置任务。系统自动选择合适的工作节点来为给定的容器集群执行调度和处理工作。其核心概念是容器Pod。 Pod 由一组在同一物理工作节点上运行的容器组成。这些组容器具有相同的网络命名空间、IP、存储配额,您还可以根据自己的实际情况对每个Pod 进行端口映射。此外,Kubernetes工作节点由主系统管理,并包含运行Docker容器所需的服务。

二、架构模型为master/nodes(work)

可以看到master是蜂王,node是工蜂。

1、Master是集群的唯一入口,要求高可用。

2. 每个节点提供一定的计算能力和存储能力。 (容器运行的节点)

1e70bb7b94f14e16bc703a99be9ed598~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717774675&x-signature=vnQIuolPz4eZh7fEQP%2FoqKLK%2FZw%3D

请求流程:

1 首先将客户端请求(创建启动容器)发送到主服务器。主节点有一个调度程序,用于分析每个节点的资源状态。

2.找到运行用户请求的容器的最佳节点,由该节点上的Docker或其他容器引擎负责启动容器。

3.启动容器时,检查本地是否有镜像。如果您没有,则需要从映像仓库(可以位于云中或私有的自检仓库中)启动。或作为节点上的容器)。

三、Master集群组件

API 服务器接收并处理容器发出的请求。 步骤1:预选1。 步骤2:选择2。控制器从多个要求中选择最好的一个(最佳算法),监视每个节点上可用的总计算和存储资源,并调整所请求的容器所需的资源量。用户保证容器健康,控制器用于保证容器健康。

标签选择器允许您通过控制器为Pod 打标签,允许控制器在创建Pod 时根据标签来识别Pod,并允许控制器通过标签的值来识别Pod。

四、Node集群组件

kubelet与apiserver交互运行,接收并处理master调度的各种任务。 docker 在pod 1 上运行容器。 K8s 上运行的最小单元是pod,而不是容器

2、Kubernets不直接调度容器,而是调度pod,pod是容器的封装层。

3. 一个Pod内可以存在多个容器,并且它们共享相同的网络协议栈和存储卷。

4. 一个Pod 通常只有一个容器。

当每个pod 被修改时,kube-proxy 必须将其结果保存到API 服务器以管理服务的创建和修改。概述如何依赖kube-proxy 在iptables 上创建规则pod

f6901ec2c64c4e1ea7b74080f438807e~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717774675&x-signature=LKEqzoqtyXTAyemK4lgUk9V3R4g%3D

如前所述,如果服务后端中的某个节点出现故障,Pod 控制器会通过标签选择器自动创建一个新的Pod,此时该新的Pod 会被该节点中的另一个组件kube-proxy 添加到服务中。当您将服务更改保存到主服务器上的API 服务器时,API 服务器会生成通知事件,并且kube-porxy 将iptables 规则更改传播到每个节点上的iptables 规则。

2ca67013dc1347ddbc3796c412554a36~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717774675&x-signature=uBP8au3uQJ0JgXdv7mDt0x2KkQc%3D

五、k8s网络模型

Etcd是Kubernetes集群中非常重要的组件,用于存储集群的所有网络配置和对象状态信息。

它必须具有高可用性,因为存储有关集群和网络配置的所有更改信息非常重要。

六、k8s通信分类

66270fe928b744e18a5d94c368a42852~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717774675&x-signature=CtiMB7ebvSR2rtf40vB2%2B1E1kuk%3D

如图所示,每个服务都有一个用于调度请求流量的服务。

如果任何服务的Pod 发生故障,Pod 控制器会自动创建一个新的Pod 并将其添加到该服务中。各个Pod的控制器通过Pod标签来管理所属的Pod。

当然,k8s集群也需要主机名来代表各个主机。同样,DNS 服务是通过服务和Pod 控制器提供的,用于管理DNS Pod。

七、etcd k8s的存储

画了一张图总结整个k8s集群如下。

2f821d1d47a740b8a76f3b6a72988c37~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717774675&x-signature=rx1RQavYtMuArMNXWaEaGX%2FV3DE%3D

优质干货:基于Jenkins+Docker的自动化代码发布流程

喜欢我写的朋友可以关注我的公众号,获取我的学习资源和其他福利。德沃普部落

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/83556.html

(0)
小条的头像小条
上一篇 2024年5月31日 下午11:37
下一篇 2024年5月31日 下午11:38

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注