做色流网站要注意什么地方,手机在线做ppt的网站有哪些问题,自定义wordpress标题的分隔符,网站文章列表模板谕餐桶吮1. k8s 架构K8s 属于经典的主从模型#xff08;Master-Slave 架构#xff09;#xff0c;由 Master 和 Node 节点构成#xff1a; Master 节点#xff1a;负责集群的管理#xff0c;协调集群中的所有活动。例如应用的运行、修改、更新等。 Node 节点#xff1a;…谕餐桶吮1. k8s 架构K8s 属于经典的主从模型Master-Slave 架构由 Master 和 Node 节点构成Master 节点负责集群的管理协调集群中的所有活动。例如应用的运行、修改、更新等。Node 节点为 Kubernetes 集群中的工作节点可以是 VM 虚拟机、物理机。每个 node 上有一个 Kubelet负责每个节点的运行状态以及与 master 节点通信执行 master 节点的指令同时 Node 节点上至少还需要运行 container runtime比如 docker这样才能够运行相关镜像。简单的示意图架构图如下所示image完整的架构图如下所示其中 Node 中的 pod 可以理解为运行应用程序的容器例如运行java的一个微服务jar包至于其他的组件将在后面进行详细介绍。image2. Master 节点Master节点是整个k8s的大脑imageMaster 节点也被称之为控制平面组件也就是上图中红色框中的区域。Master 节点一般来说由如下构成kube-apiserver提供 RESTful API供用户、kubectl、其他组件和外部系统调用。无状态可水平扩展通常部署多个实例实现高可用。etcd分布式键值数据库存储集群的所有配置数据和状态信息如节点、Pod、Service 等对象的状态配置文件。所有组件通过 apiserver 读写 etcd不直接访问。一般来说是部署多个节点使用 Raft 协议保证一致性。kube-scheduler负责 Pod 的调度决定将新创建的 Pod 分配到哪个 Node 上运行。kube-controller-manager图中 c-m运行控制器进程确保集群的实际状态与期望状态一致。这句话听起来似乎有点抽象但是实际上我们可以把它理解为一个管家它不断检查集群的“实际状态”并努力让它与用户定义的“期望状态”保持一致。 例如说我希望我的集群中有 3 个 nginx pod 在运行通过相关配置文件进行定义突然有一个 pod 挂了gg 了那么 c-m 就会重新拉起来一个 pod执行顺序如下c-m 从 apiserver 读取“期望状态”比如 replicas: 3从 apiserver 读取“当前实际状态”比如现在只有 2 个 Pod 在运行如果不一致 → 执行操作比如创建 1 个新 Pod写回 apiserver更新状态休息一会儿然后重复步骤 15cloud-controller-manager图中 c-c-m是 Kubernetes 与底层云平台如 AWS、Azure、阿里云等之间的“翻译官”和“对接员”专门处理那些需要和云厂商 API 交互的功能。3. Node 节点Master 节点我们已经理解了那么什么是 Node 节点呢。Node 节点也称之为 Worker 节点就是真正“运行应用”的 worker。在现实世界Node 节点可以是一台物理服务器一台 VM 虚拟机一个 Node 节点严格对应一台“计算实例”但是注意Node 节点不是容器Node 是运行容器的宿主机。下图中红色框框里面的内容便是 Node 节点。imageNode 节点主要包含如下组件kubelet负责与 Master 通信、接收调度指令、调用容器运行时启动或终止 Pod并向 api-server 持续上报节点和容器的健康状态。执行探针挂载卷设置网络等等。每个 node 必须要有一个 kubelet。Container Runtime容器运行时根据 kubelet 的指令拉取镜像、创建/启动/停止容器管理容器的生命周期。如果简单的理解你就可以把他看成一个 docker可以运行相关的镜像。kube-proxy在 每个 Node 上维护网络规则如 iptables 或 IPVS将访问流量Service 的流量转发到后端 Pod。每个 Node 都需要运行 kube-proxy因为如果一个容器不跟外界通信那么也毫无意义。cAdvisor用于自动发现并收集当前 Node 节点上所有容器包括 Pod 中的容器的资源使用情况和性能数据比如 CPU、内存、磁盘 I/O、网络使用率等。4. 命名空间k8s 集群在搭建好之后需要提供给多个部门或者小组进行使用。而在我们开发和生产过程中大概率不同小组可能会出现相同的资源例如应用服务名同时每个小组需要的计算资源数量也可能不同以及每个小组的权限也不同例如开发团队不能访问生产环境。为了解决这个问题k8s 提出了命名空间namespace的概念默认的命名空间是default命名空间有如下好处资源隔离不同命名空间中的资源名称可以重复例如两个命名空间中都可以有名为 web-app 的 Deployment。避免资源命名冲突。限制资源使用配合 ResourceQuota 和 LimitRange。权限控制RBAC可以为不同命名空间设置不同的访问权限。例如开发团队只能访问 dev? 命名空间运维团队可访问 prod。环境隔离将开发dev、测试test、预发布staging、生产prod环境部署在不同命名空间中便于管理。简化管理可以按命名空间批量操作资源如删除整个命名空间及其所有资源。日志、监控、网络策略等也可以按命名空间维度配置。