Kubernetes(k8s)中几个概念理解

注:本文(包括图片)仅供学习。

Kubenetes(k8s)

什么是Kubenetes?

Kubernetes(k8s)是容器编排引擎,是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。
Docker便是一中典型的容器技术。当然,k8s不仅仅支持Docker,还支持Rocket,这是另一种容器技术。

Kubenetes可以做什么?

使用 Kubernetes 可以:

  • 自动化容器的部署和复制
  • 随时扩展或收缩容器规模
  • 将容器组织成组,并且提供容器间的负载均衡
  • 很容易地升级应用程序容器的新版本
  • 提供容器弹性,如果容器失效就替换它,等等…

换句话说,k8s方便了对容器的管理,有些是手动的,有些完全是自动管理的。

Kubenetes中涉及的一些概念

我刚刚接触 k8s 不久,刚刚接触的时候,对 k8s 的很多概念以及概念之间的关系没能理清楚,以至于给之后的工作带来了不小的困惑。理解这些概念不难,但很有必要。

容器 container

Kubenetes中容器(container)的概念和Docker中容器的概念相同,不同的容器(container)在文件资源和系统资源上是独立的。

比如从 docker 的镜像仓库中 pull 了一个镜像 image1,然后在本地执行 run 命令,那么就会在本地建立一个 container 容器。

Pod

Pod 是一组容器(container)的集合,这些容器共享相同的运行环境和一些资源,它们(container)之间通过远程过程调用(RPC)通信。不同容器之间在文件和系统资源上是独立的,但有时候在逻辑上也是需要有耦合的,比如一个web服务器容器和缓存容器。可以认为 Pod 是逻辑边界,不同 Pod 之间逻辑上是独立的。

Kubernetes(k8s)中几个概念理解

标签 Label

Label 是 Pod 的一个属性,方便对 Pod 进行聚类(找到从属的服务 Service)。

服务 Service

Service 是定义一系列 Pod 以及访问这些 Pod 的策略的一层抽象。Service 通过 Label 找到 Pod 组。因为Service 是抽象的,所以在图表里通常看不到它们的存在。
Service 拥有固定的 IP 地址,且能够在 Pod 之间实现负载均衡(LoadBalancer 服务)。

Kubernetes(k8s)中几个概念理解

节点 Node

节点是物理或者虚拟机器,比如一台台式机、笔记本,或者虚拟主机、云主机等 。每个节点都运行如下 Kubernetes 关键组件:

  • Kubelet:是主节点代理。
  • Kube-proxy:Service 使用其将链接路由到Pod,如上文所述。
  • Docker 或 Rocket:Kubernetes 使用的容器技术来创建容器。

集群 Cluster

集群是一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了 Kubernetes 平台。
Kubernetes(k8s)中几个概念理解
更多的示意图
Kubernetes(k8s)中几个概念理解
Kubernetes(k8s)中几个概念理解

更多参考资料

https://blog.frognew.com/2017/04/kubernetes-overview.html
https://zhuanlan.zhihu.com/p/40927470
http://www.dockone.io/article/932
https://blog.csdn.net/tengxy_cloud/article/details/52847156
https://m635674608.iteye.com/blog/2360792
https://blog.csdn.net/weixin_38070561/article/details/82702024
https://thenewstack.io/how-kubernetes-is-transforming-into-a-universal-scheduler/
https://thenewstack.io/kubernetes-an-overview/
https://thenewstack.io/explore-multicloud-deployments-aci-connector-kubernetes/
https://thenewstack.io/find-perfect-kubernetes-distribution/
https://thenewstack.io/strategies-running-stateful-applications-kubernetes-pet-sets/
https://thenewstack.io/taking-kubernetes-api-spin/