k8s-整体概述和架构

k8s-整体概述和架构 - wwchihiro - 博客园

1、Pods与Nodes

Pod总是运行在Node之上。Node是Kubernetes中的一个工作机器,通常是一个虚拟机或者物理机。每个Node被Master管理。一个节点能有多个pod,同时Kubernetes master在集群之上自动调度pod。Master的自动调度考虑到每个Node上的可用资源。

每个Kubernetes Node至少运行:

  • Kubelet,一个负责Kubernetes Master和Node之间通讯的进程;它管理着运行在机器上Pods和Containers
  • 容器运行时(比如Docker,rkt),负责从registry拉取容器镜像,取出容器,运行应用

Pod的定义和好处:

定义:Pod是一个或一个以上的 容器(例如Docker容器)组成的,且具有共享存储/网络/UTS/PID的能力,以及运行容器的规范。并且在Kubernetes中,Pod是最小的可被调度的原子单位
在Kubernetes集群中,Pod是所有业务类型的基础,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。Kubernetes不只是支持Docker容器,它也支持其他容器。

好处:Kubernetes 项目之所以要这么做的原因:在 Borg 项目的开发和实践过程中,Google 公司的工程师们发现,他们部署的应用,往往都存在着类似于“进程和进程组”的关系。更具体地说,就是这些应用之间有着密切的协作关系,使得它们必须部署在同一台机器上, 而如果事先没有“组”的概念,像这样的运维关系就会非常难以处理。
像这种关联关系非常紧密的容器就可以规整为同一个Pod。对这种关系特别紧密的容器进行调度的场景就是典型的典型的成组调度(gang scheduling)。
参考:K8S学习笔记之为什么需要Pod?_学无止境-CSDN博客_为什么需要pod

2、Deployment介绍

为了更好地解决服务编排的问题,k8s在V1.2版本开始,引入了deployment控制器,值得一提的是,这种控制器并不直接管理pod,

而是通过管理replicaset来间接管理pod,即:deployment管理replicaset,replicaset管理pod。所以deployment比replicaset的功能更强大。

deployment的主要功能有下面几个:

  • 支持replicaset的所有功能
  • 支持发布的停止、继续
  • 支持版本的滚动更新和版本回退

注:
创建Deployment对象后,master会根据Deployment对象的配置文件去描述应用,应用名称,使用的镜像名称,需要几个实例,多少内存,多少CPU资源

3、kubectl子命令详解expose

  • expose将一个资源(replication controller、service、deployment和pod)作为新的K8s服务。
  • expose按名称查找deployment、service、RS、RC或pod,并将该资源的选择器用作指定端口上新服务的选择器。deployment或RS只有当其选择器可转换为服务支持的选择器时,即当选择器仅包含matchLabels组件时,才会暴露为服务。
     

参考:K8s系列之:kubectl子命令详解expose_zhengzaifeidelushang的博客-CSDN博客_k8s的expose

4、kubernetes学习之service、deployment、pod的关系

  • deployment根据Pod的标签关联到Pod,是为了管理pod的生命周期
  • service根据Pod的标签关联到pod,是为了让外部访问到pod,给pod做负载均衡

具体参考上面的k8s-整体概述和架构

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐