Kubernetes-K8S总结

237 阅读3分钟

什么是K8S:

K8S(Kubernetes) 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态系统。Kubernetes 的服务、支持和工具广泛可用。

image.png

K8S可以做什么?

容器是打包和运行应用程序的好方式。在生产环境中,你需要管理运行应用程序的容器,并确保不会停机。 例如,如果一个容器发生故障,则需要启动另一个容器。如果系统处理此行为,会不会更容易? 这就是 Kubernetes 来解决这些问题的方法! Kubernetes 为你提供了一个可弹性运行分布式系统的框架。 Kubernetes 会满足你的扩展要求、故障转移、部署模式等。 例如,Kubernetes 可以轻松管理系统的 Canary 部署。

服务发现和负载均衡

K8S可以使用DNS和自己ip地址公开容器,如果进入容器的流量很大,k8s可以负载均衡并分配网络流量,从而使部署稳定

自动部署和回滚

K8S描述已经部署容器的所需状态,他可以以受控的速率将实际状态更改为期望状态,例如,你可以自动化 Kubernetes 来为你的部署创建新容器, 删除现有容器并将它们的所有资源用于新容器。

自动完成装箱计算

K8S允许你指定的每个容器所需CPU和内存。当容器指定了资源请求时,k8S可以作出更好地决策来管理容器的资源

自我修复

k8s重新启动失败的容器,替换容器,杀死不响应用户定义的运行状况检查的容器,并在准备好服务之前将其通告给客户端

秘钥与配置管理

允许存储和管理敏感信息,例如密码,令牌,私钥。你可以在不重建容器镜像的情况下部署和更新秘钥,和应用程序配置,也无需在堆栈配置中暴露秘钥。

K8s系统架构

k8s分为2种节点:

  • MASTER 控制节点,主节点(具有指挥权)
  • Node工作节点

Master节点组成

image.png

  • Etcd:K8s集群的数据库,所有持久化的状态信息存储在Etcd中
  • API Servcie:提供K8s Api接口,主要处理Rest操作以及更新Etcd中的对象,是所有资源增删改查的唯一入口。
  • Scheduler: 资源调度器,根据etcd的节点资源决定Pod绑定到哪个Node上
  • Controller Manager,负责保障pod的健康存在,资源对象的自动化控制中心,Kubernetes集群有很多控制器
  • API相当于命令,沟通API server

Node节点的组成

  • Docker Engine:负责节点容器的管理工作,最终创建出来的是一个Docker容器
  • Kubelet:安装在Node上的代理服务,用来管理Pods以及容器/镜像/Volume等,实现对集群对节点的管理
  • kube-proxy:安装在Node上的网络代理服务,提供网络代理以及负载均衡

K8S逻辑架构

从逻辑架构上看,K8s分为Pod、Controller、Service

POD

  • POD是k8s的最小单位
  • POD的IP地址是随机的,删除POD会改变IP
  • POD都有一个根容器
  • 一个POD内可以由一个或多个容器组成
  • 一个POD内的容器共享根容器的网络命名空间
  • 一个POD内的网络地址由根容器提供

Controller

用来管理POD。控制器的种类有很多:

  • RC Replication Controller;控制POD有多个副本
  • RS ReplicaSet:RC控制的升级版
  • Deployment:推荐使用,功能更强大,包含了RS控制器
  • DaemonSet:保证所有的Node上有且只有一个Pod在运行
  • StatefulSet:有状态的应用,为Pod提供唯一的表示,他可以保证部署和scale的顺序

image.png