kubernetes基本概念

基本架构

clipboard.png

彩色版

clipboard.png

基本概念

Master

master节点运行着集群管理相关的一组进程:

  • etcd

  • kube-apiserver

  • kube-controller-manager

  • scheduler

这些进程实现了整个集群的资源管理、Pod调度、弹性伸缩、安全控制、系统监控、纠错等管理功能。

Node(节点)

  • 之前的版本叫做Minion,可以是一台物理主机,也可以是一台虚拟机。

  • 每个Node上运行用于启动和管理Pod的服务Kubelet

  • 运行Kubelet、kube-proxy、docker daemon等服务进程

相关命令

  • kubectl get node

NAME           LABELS                                STATUS     AGE
xxx   kubernetes.io/hostname=xxxx   Ready      3h
127.0.0.1      kubernetes.io/hostname=127.0.0.1      NotReady   3h
  • kubectl describe node xxx

Pod(最小调度单元、服务隔离)

  • 一个Pod可以被一个容器化的环境看做是应用层的逻辑宿主机(Logical Host),通常一个Node中可以运行几百个Pod,每个Pod中有多个容器应用,同一个Pod中的多个容器应用通常是紧密耦合的(相当于多个业务容器组成的一个逻辑虚拟机)。

  • 每个Pod中有一个特殊的Pause容器,其他的成为业务容器,这些业务容器共享Pause容器的网络栈以及Volume挂载卷,因而他们之间的通信及数据交互更为高效。

同一个pod中的业务容器共享如下资源:

  • PID命名空间(不同应用程序可以看到其他应用程序的PID)

  • 网络命名空间(pod中多个容器可以访问同一个IP和端口范围)

  • IPC命名空间(能够使用SystemV IPC或者POSIX消息队列进行通信)

  • UTS命名空间(共享同一个主机名)

  • Volumes(访问定义在pod级别的存储卷)

Replication Controller(管理一组Pod)

kubernetes通过RC中定义的Label筛选出对应的Pod实例并实时监控其状态和数量,如果实例数量少于定义的副本数量,则会根据RC中定义的Pod模板来创建一个新的Pod,然后Scheduler将此Pod调度到合适的Node上启动运行,直到Pod实例数量达到预定目标。这个过程完全是自动化的。

  • 确保用户期望的Pod数量(创建或销毁Pod)

  • 在线Pod数量调整

Service(一组提供相同服务的pod的对外访问接口)

具有如下特征:

  • 拥有一个唯一指定的名字

  • 拥有一个虚拟IP和端口号

  • 能够提供某种远程服务能力

  • 被映射到提供这种服务能力的一组容器上

service的服务进程目前都基于socket通信方式对外提供服务。

clipboard.png

kubernetes内置了透明的负载均衡以及故障恢复的机制。

Label(标签)

解决service与pod之间的关联问题。kubernetes给每个pod贴上一个标签,然后给service定义定义标签选择器。

Scheduler(将Pod调度到Node上)

将Pod调度到合适的Node上启动运行

Volume(容器共享存储卷)

pod中能够被多个容器访问的共享目录,与pod同生命周期,但与容器的生命周期无关,当容器终止或重启时,volume中的数据不会丢失。

Namespace(命名空间)

使用namespace来组织kubernetes的各种对象,可以实现用户的分组(多租户),对不同的租户还可以进行单独的资源设置和管理,是的整个集群的资源配置非常灵活。

参考


code-craft
spring boot , docker and so on 欢迎关注微信公众号: geek_luandun

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很...

11.8k 声望
2k 粉丝
0 条评论
推荐阅读
2022年终总结
最近两年开始陷入颓废中,博客也写的越来越少了。究其原因,主要还是陷入了职业倦怠期,最近一次跳槽感觉颇为失败,但是碍于给的薪资高,为了五斗米折腰,又加上最近行情不好,想要往外跳也跳不了,就这样子一直...

codecraft阅读 691

Kubernetes v1.26 新特性一览
我每期的 「k8s生态周报」都有一个叫上游进展的部分,所以很多值得关注的内容在之前的文章中已经发过了。这篇中我会再额外介绍一些之前未涵盖的,和之前介绍过的值得关注的内容。

张晋涛2阅读 610评论 1

封面图
深入剖析容器网络和 iptables
Docker 能为我们提供很强大和灵活的网络能力,很大程度上要归功于与 iptables 的结合。在使用时,你可能没有太关注到 iptables 的作用,这是因为 Docker 已经帮我们自动完成了相关的配置。

张晋涛3阅读 1.3k

封面图
使用kubeasz部署高可用kubernetes集群
本实验采用kubeasz作为kubernetes环境部署工具,它是一个基于二进制方式部署和利用ansible-playbook实现自动化来快速部署高可用kubernetes集群的工具,详细介绍请查看kubeasz官方。本实验用到的所有虚拟机默认软...

李朝阳2阅读 430

Kubernetes 证书管理系列(一)
大家好,我是张晋涛。这是一个系列文章,将会通过七篇内容和大家一起聊聊 Kubernetes 中的证书管理。以下是内容概览:如上所示,在第一篇中,我们将从原理出发,来理解 Kubernetes 中的证书及其相关的作用,然后...

张晋涛2阅读 821

封面图
CodeGalaxy 推出轻量集群,可在云主机上一键搭建 K8s
CodeGalaxy 是 Swoole 官方推出的 ServerLess 平台,底层基于 Docker 和 K8s,帮助开发者更简单方便地管理云上的 Web 应用/服务。CodeGalaxy 是完全免费的,用户不需要付费即可使用。

韩天峰2阅读 411

vivo 云原生容器探索和落地实践
作者:vivo 互联网容器团队- Pan Liangbiao本文根据潘良彪老师在“2022 vivo开发者大会"现场演讲内容整理而成。公众号回复【2022 VDC】获取互联网技术分会场议题相关资料。

vivo互联网技术2阅读 661

当一个代码的工匠回首往事时,不因虚度年华而悔恨,也不因碌碌无为而羞愧,这样,当他老的时候,可以很...

11.8k 声望
2k 粉丝
宣传栏