k8s学习笔记(二):k8s的组件介绍

这篇具有很好参考价值的文章主要介绍了k8s学习笔记(二):k8s的组件介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s组件介绍

架构图

k8s组件,k8s,kubernetes,docker,云原生,运维

角色

  • Master:是集群的网关和中枢枢纽,主要作用:暴露API接口,跟踪其他服务器的健康状态、以最优方式调度负载,以及编排其他组件之间的通信。单个的Master节点可以完成所有的功能,但是考虑单点故障的痛点,生产环境中通常要部署多个Master节点,组成Cluster。包括所有的控制平面组件
  • Node:是Kubernetes的工作节点,负责接收来自Master的工作指令,并根据指令相应地创建和销毁Pod对象,以及调整网络规则进行合理路由和流量转发。生产环境中,Node节点可以有N个。包括所有node节点。

控制平面组件(Control Plane Components)

控制平面组件会为集群做出全局决策,比如资源的调度。 以及检测和响应集群事件,例如当不满足部署的 replicas 字段时, 要启动新的 pod)。

控制平面组件可以在集群中的任何节点上运行。 然而,为了简单起见,设置脚本通常会在同一个计算机上启动所有控制平面组件, 并且不会在此计算机上运行用户容器。

kube-apiserver

API 服务器是 Kubernetes 控制平面的组件, 该组件负责公开了 Kubernetes API,负责处理接受请求的工作。 API 服务器是 Kubernetes 控制平面的前端。

apiserver是整个集群的网关

K8S对外的唯一接口,提供HTTP/HTTPS RESTful API,即kubernetes API。所有的请求都需要经过这个接口进行通信。主要负责接收、校验并响应所有的REST请求,结果状态被持久存储在etcd当中,所有资源增删改查的唯一入口

端口
[root@k8s-master ~]# netstat -anplut|egrep LISTEN.*apiserver

k8s组件,k8s,kubernetes,docker,云原生,运维

容器
[root@k8s-master ~]# docker ps|grep apiserver
c09166f7c313   ca9843d3b545                                        "kube-apiserver --ad…"   3 minutes ago   Up 3 minutes             k8s_kube-apiserver_kube-apiserver-k8s-master_kube-system_2fc27474246553d4d73cbb5d364b9726_6
8f9429e1d4e6   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                  5 minutes ago   Up 5 minutes             k8s_POD_kube-apiserver-k8s-master_kube-system_2fc27474246553d4d73cbb5d364b9726_5

etcd

一致且高可用的键值存储,用作 Kubernetes 所有集群数据的后台数据库

负责保存k8s 集群的配置信息和各种资源的状态信息,当数据发生变化时,etcd会快速地通知k8s相关组件。etcd是一个独立的服务组件,并不隶属于K8S集群。生产环境当中etcd应该以集群方式运行,以确保服务的可用性。

etcd不仅仅用于提供键值数据存储,而且还为其提供了监听(watch)机制,用于监听和推送变更。在K8S集群系统中,etcd的键值发生变化会通知到API Server,并由其通过watch API向客户端输出。

端口
[root@k8s-master ~]# netstat -anplut|egrep LISTEN.*etcd

k8s组件,k8s,kubernetes,docker,云原生,运维

容器
[root@k8s-master ~]# docker ps |grep etcd
c66803416c06   0369cf4303ff                                        "etcd --advertise-cl…"   6 minutes ago   Up 6 minutes             k8s_etcd_etcd-k8s-master_kube-system_6b17573732d23fd599a67ffecd227455_5
f2847eb09da2   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                  6 minutes ago   Up 6 minutes             k8s_POD_etcd-k8s-master_kube-system_6b17573732d23fd599a67ffecd227455_5

kube-scheduler

kube-scheduler 是控制平面的组件, 负责监视新创建的、未指定运行节点(node)的 Pods, 并选择节点来让 Pod 在上面运行

调度决策考虑的因素包括单个 Pod 及 Pods 集合的资源需求、软硬件及策略约束、 亲和性及反亲和性规范、数据位置、工作负载间的干扰及最后时限。

容器
[root@k8s-master ~]# docker ps|grep scheduler
c179d65f1940   3138b6e3d471                                        "kube-scheduler --au…"   7 minutes ago   Up 7 minutes             k8s_kube-scheduler_kube-scheduler-k8s-master_kube-system_0378cf280f805e38b5448a1eceeedfc4_5
2dbe2c73b36b   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                  7 minutes ago   Up 7 minutes             k8s_POD_kube-scheduler-k8s-master_kube-system_0378cf280f805e38b5448a1eceeedfc4_5
端口
[root@k8s-master ~]# netstat -anplut|egrep LISTEN.*scheduler

k8s组件,k8s,kubernetes,docker,云原生,运维

kube-controller-manager

kube-controller-manager 是控制平面的组件, 负责运行控制器进程。

负责管理集群各种资源,保证资源处于预期的状态。

从逻辑上讲, 每个控制器都是一个单独的进程, 但是为了降低复杂性,它们都被编译到同一个可执行文件,并在同一个进程中运行。

这些控制器包括:

  • 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应
  • 任务控制器(Job Controller):监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
  • 端点分片控制器(EndpointSlice controller):填充端点分片(EndpointSlice)对象(以提供 Service 和 Pod 之间的链接)。
  • 服务账号控制器(ServiceAccount controller):为新的命名空间创建默认的服务账号(ServiceAccount)。
  • 副本控制器:指定pod里的容器数,缺少几个就自动补齐
  • 部署控制器:帮助部署软件
  • 计划任务控制器:帮助监控计划任务
端口
[root@k8s-master ~]# netstat -anplut|egrep LISTEN.*kube-controlle

k8s组件,k8s,kubernetes,docker,云原生,运维

容器
[root@k8s-master ~]# docker ps |grep kube-controlle
3ea62f3d0381   b9fa1895dcaa                                        "kube-controller-man…"   10 minutes ago   Up 10 minutes             k8s_kube-controller-manager_kube-controller-manager-k8s-master_kube-system_5c575d17517839b576ab4817fd06353f_5
8d65ce545508   registry.aliyuncs.com/google_containers/pause:3.2   "/pause"                  10 minutes ago   Up 10 minutes             k8s_POD_kube-controller-manager-k8s-master_kube-system_5c575d17517839b576ab4817fd06353f_5

cloud-controller-manager

一个 Kubernetes 控制平面组件, 嵌入了特定于云平台的控制逻辑。 云控制器管理器(Cloud Controller Manager)允许你将你的集群连接到云提供商的 API 之上, 并将与该云平台交互的组件同与你的集群交互的组件分离开来。

cloud-controller-manager 仅运行特定于云平台的控制器。 因此如果你在自己的环境中运行 Kubernetes,或者在本地计算机中运行学习环境, 所部署的集群不需要有云控制器管理器。

kube-controller-manager 类似,cloud-controller-manager 将若干逻辑上独立的控制回路组合到同一个可执行文件中, 供你以同一进程的方式运行。 你可以对其执行水平扩容(运行不止一个副本)以提升性能或者增强容错能力。

下面的控制器都包含对云平台驱动的依赖:

  • 节点控制器(Node Controller):用于在节点终止响应后检查云提供商以确定节点是否已被删除
  • 路由控制器(Route Controller):用于在底层云基础架构中设置路由
  • 服务控制器(Service Controller):用于创建、更新和删除云提供商负载均衡器

Node组件

Kubelet

它保证容器都运行在Pod中。

单独的程序,在宿主机里运行,不是在容器里运行的

kubelet 会在集群中每个节点(node)上运行。 它保证容器(containers)都运行在 Pod 中。

kubelet是node的agent,当Scheduler确定在某个Node上运行Pod后,会将Pod的具体配置信息(image、volume等)发送给该节点的kubelet,kubelet会根据这些信息创建和运行容器,并向master报告运行状态

端口
[root@k8s-master ~]# netstat -anplut|grep kubelet

k8s组件,k8s,kubernetes,docker,云原生,运维

进程
[root@k8s-master ~]# ps aux|grep kubelet

k8s组件,k8s,kubernetes,docker,云原生,运维

Kube-proxy

单独的程序,在宿主机里运行,不是在容器里运行的

kube-proxy 是集群中每个节点(node)上所运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分。

kube-proxy 维护节点上的一些网络规则, 这些网络规则会允许从集群内部或外部的网络会话与 Pod 进行网络通信。

如果操作系统提供了可用的数据包过滤层,则 kube-proxy 会通过它来实现网络规则。 否则,kube-proxy 仅做流量转发。

代理模式(负载均衡)
  • ipvs,生产环境建议开启ipvs
  • iptables,默认使用,效率低
端口
[root@k8s-master ~]# netstat -anplut|grep LISTEN.*kube-proxy

k8s组件,k8s,kubernetes,docker,云原生,运维

进程
[root@k8s-master ~]# ps aux|grep kube-proxy
root       3485  0.5  1.5 744064 28764 ?        Ssl  12:41   0:04 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf --hostname-override=k8s-master
root      14987  0.0  0.0 112824   992 pts/0    S+   12:54   0:00 grep --color=auto kube-proxy

核心插件

网络通信组件

Calico

实现在overlay网络类型的宿主机间通信,适合大规模的集群

所有的k8s主机都会运行

flannel

适合小规模的集群

Core DNS

K8S集群中调度并运行提供DNS服务的Pod,同一集群内的其他Pod可以使用该DNS服务来解决主机名。K8S自1.11版本开始默认使用CoreDNS项目来为集群提供服务注册和服务发现的动态名称解析服务。

Dashboard

K8S集群的全部功能都要基于Web的UI,来管理集群中的应用和集群自身。文章来源地址https://www.toymoban.com/news/detail-765650.html

到了这里,关于k8s学习笔记(二):k8s的组件介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生】k8s组件&架构介绍与K8s最新版部署

          个人主页: 征服bug-CSDN博客 kubernetes专栏: kubernetes_征服bug的博客-CSDN博客  目录 1 集群组件 1.1 控制平面组件(Control Plane Components) 1.2 Node 组件 1.3 插件 (Addons) 2 集群架构详细 3 集群搭建[重点] 3.1 minikube 3.2 裸机安装 集群组件 核心概念 集群安装 集群 cluster : 将同一个

    2024年02月14日
    浏览(34)
  • K8s(Kubernetes)学习(一):k8s概念及组件

    Kubernetes中文文档:https://kubernetes.io/zh-cn/docs/home/ Kubernetes源码地址:https://github.com/kubernetes/kubernetes 首先要了解应用程序部署经历了以下几个时代: 传统部署时代:在物理服务器上运行应用程序。 虚拟化部署时代:虚拟化技术允许你在单个物理服务器的 CPU 上运行多台虚拟机

    2024年02月05日
    浏览(43)
  • 【云原生-K8s】Kubernetes安全组件CIS基准kube-beach安装及使用

    为了保证集群以及容器应用的安全,Kubernetes 提供了多种安全机制,限制容器的行为,减少容器和集群的攻击面,保证整个系统的安全性。 互联网安全中心(CIS,Center for Internet Security),是一个非盈利组织,致力为互联网提供免费的安全防御解决方案 官网 :https://www.cisecu

    2024年02月06日
    浏览(53)
  • 01-k8s学习笔记之认识 Kubernetes

    应用部署的三大阶段 k8s 的特点 Apache Mesos Docker Swarm Google Kubernetes

    2024年01月16日
    浏览(47)
  • kubernetes(k8s)大白学习02:容器和docker基础、使用、架构学习

    简单说:容器(container)就是计算机上的一个沙盒进程,它与计算机上的所有其它进程相隔离。 这种隔离是怎么做到的呢?它利用了内核提供的 namespace 和 cgroup 这 2 种技术。这些技术能力在 Linux 中已经存在了很长时间。而 Docker 或容器技术致力于将这些功能更易于使用和更

    2024年02月07日
    浏览(50)
  • K8s学习笔记——资源组件篇

    前一篇文章我们介绍了K8s的概念理解和常用命令,这篇我们重点介绍K8s的资源组件和相关配置使用。 Node: 是 Pod 真正运行的主机,可以是物理机,也可以是虚拟机。为了管理 Pod,每个 Node 节点上至少要运行 container runtime(比如 docker, rkt, containerd)、kubelet 和 kube-proxy 服务。

    2024年02月05日
    浏览(33)
  • 云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)

    目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd)  5.master2节点迁移容器运行时(docker → containerd)  6.node1节点容器运行时迁移(docker → containerd)  7.升级集群计划(v1.23.14 → v1.24.1) 8.升级master1节点版本(v1.24.1) 9.升级master2节点版本

    2024年02月03日
    浏览(47)
  • 02-k8s学习笔记之相关组件

    kube-apiserver kube-controller-manager cloud-controller-manager kube-scheduler etcd kubelet kube-proxy container runtime

    2024年02月01日
    浏览(37)
  • 云原生Kubernetes:K8S概述

    目录 一、理论 1.云原生 2.K8S 3.k8s集群架构与组件 4.K8S网络 二、总结 (1)概念 云原生是一种基于容器、微服务和自动化运维的软件开发和部署方法。它可以使应用程序更加高效、可靠和可扩展,适用于各种不同的云平台。 如果要更直接通俗的来解释下上面的概念,云原生更

    2024年02月10日
    浏览(40)
  • 【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务

    目录 一、认识 Kubernetes 网络 二、外部网络如何访问 k8s 内部服务 1. NodePort 2. Load Balancer 3. Ingress Kubernetes 最底层的网络为节点网络,用来保证 k8s 集群的节点(master 和 worker、worker 节点之间)能够做正常的 IP 寻址和通讯。 Kubernetes 第二层网络就是 Pod 网络,构建于节点网络之上

    2024年01月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包