k8s整理(基础知识)

1.基础知识

本课程中k8s的基础知识由六个部分组成:(1)创建一个k8s集群(2)部署应用程序(3)应用程序探索(4)应用外部可见(5)应用可扩展(6)应用更新

image-20220913153614444

1.1 创建集群

集群图

image-20220913153829113

一个集群中主要包含两种类型的资源:

  • Master:负责调度整个集群

    • 调度应用
    • 维护应用所需要的状态
    • 应用扩容
    • 推出更新
    • ...
  • Nodes:负责运行应用;Node可能是一台虚拟机也可能是一台物理机

    • 每个Node中都有一个Kubelet组件来管理Node和Master之间的通信
    • Node内还存在操作容器的组件,如Docker和rkt
    • 处理生产级的集群至少需要三个Node,因为如果一个 Node 出现故障其对应的 etcd 成员和控制平面实例都会丢失

启动运行

​ 在集群上部署应用时,命令Master启动应用容器,然后Master就会编排容器在集群的Node上运行,Node和Master之间通信通过调用Master暴露的k8s api实现,同时终端用户也可以使用k8s api和集群交互

1.2 使用 kubectl 创建 Deployment

集群图

image-20220913164442853

运行部署

​ 部署应用由Deployment实现,Deployment告诉k8s如何创建和更新应用程序的实例,创建了Deployment之后,master会把应用程序调度到集群的节点中。

Deployment 实现了监控实例的健康运行自我修复机制,当某个实例的节点关闭或者down,Deployment会自动把其他健康节点的实例替换上去

1.3 pod和工作节点

Node架构图

image-20220829160100073

一些核心概念

  • pod:k8s中的最小调度单元和资源单位,由Pod API产生,并由k8s进行调度;Pod指定了包含容器的运行方式(例如资源,环境变量等)
  • Deployment:Pod的上一层管理抽象,能够比较方便的进行管理
  • Service:Pod的上一层服务抽象,作为第三方给cli提供服务
  • Namespace:用来实现集群内部的逻辑隔离

    • 每个资源都至少属于一个namespace
    • 单个namespace中的资源个体命名唯一
    • 不同namespace中的资源个体命名可不唯一

运行部署

​ 当创建好Deployment后,k8s会自动添加一个Pod来托管1+个容器,这些容器内的资源实现共享(如共享内存、共享网络、容器运行时信息等)

Pod 为特定于应用程序的“逻辑主机”建模,其中可以包含多个相对耦合的不同容器,Pod内的容器共享ip地址,始终位于同一位置并且共同调度,并在同一工作节点上的共享上下文中运行。

1.4 使用Service暴露应用

Service

​ Node如果挂掉,Pod的生命周期也会结束,此时ReplicaSet会新建新的Pod去驱动集群回到原始状态,此时就出现了一个问题,每个Pod都有一个唯一的IP地址,Pod的修改和删除需要保持这个原则,此时需要有一种方式来协调Pod的变更 —— Service,它定义了Pod的逻辑集和访问Pod的协议。(没有Service,Pod的IP将不会被对外暴露),主要的几个配置如下

  • ClusterIP:集群内部IP
  • NodePort:使用 NAT 在集群中每个选定 Node 的相同端口上公开 Service 。使用<NodeIP>:<NodePort> 从集群外部访问 Service。是 ClusterIP 的超集
  • LoadBalancer- 在当前云中创建一个外部负载均衡器(如果支持的话),并为 Service 分配一个固定的外部IP。是 NodePort 的超集。
  • ExternalName - 通过返回带有该名称的 CNAME 记录,使用任意名称(由 spec 中的externalName指定)公开 Service。不使用代理。

1.5 扩缩应用程序

首先应用程序的扩缩容是通过改变Deployment中的副本数量来实现的

1.6 应用的更新

滚动更新允许通过使用新的实例逐步更新 Pod 实例,零停机进行 Deployment 更新。新的 Pod 将在具有可用资源的节点上进行调度。

滚动更新允许以下操作:

  • 将应用程序从一个环境提升到另一个环境(通过容器镜像更新)
  • 回滚到以前的版本
  • 持续集成和持续交付应用程序,无需停机

本文链接:

http://blog.ydspoplar.top/archives/11/
1 + 6 =
快来做第一个评论的人吧~