K8S入门系列之一:Kubernetes概览


VM和容器的区别

什么是云原生

CNCF——云原生计算基金会

什么是Kubernetes

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

Kubernetes这个名字源于希腊语,意为“舵手”或“飞行员”。k8s这个缩写是因为k和s之间有8个字母。Google在2014年开源了Kubernetes项目。Kubernetes建立在Google大规模运行生产工作负载方面拥有十几年的经验基础上,结合了社区中最好的想法和实践。

Kubernetes是用于自动部署,扩展和管理容器化应用程序的开源系统。

Kubernetes架构

架构图

核心组件

control-plane 节点核心组件:https://kubernetes.io/docs/concepts/overview/components/

组件 说明
kube-apiserver 提供Restful API接口、集群的统一入口,集群的认证、授权、准入控制及各组件的协调者,所有的对象资源的增删改查和监听操作都交给apiserver处理后再提交给etcd数据库做持久化存储
kube-controller-manager 管理k8s出厂的时候预置的各种类(kind)(如deployment、service等),然后从类中实例化出资源对象并对其进行管理。Controller manager由多种controller组成,包括Node Controller、Job Controller、Endpoints Controller、Service Account & Token Controller
kube-sheduler 将pod调度到可用的Node节点上
etcd 高可用的分布式键值数据库,可用于服务发现。etcd采用raft一致性算法,基于Go语言实现。etcd作为一个高可用键值存储系统,天生就是为集群化而设计,用于保存K8s集群状态数据

Kubernetes工作流程







Container Runtime Interface(CRI)架构

容器运行时分为High-level和Low-level

  • High-level:管理,协调,接收外部请求,提供存储、网络
  • Low-level:,遵循OCI(Open Container Initiative)开放容器标准,创建cgroups和namespaces进行资源隔离

dockershim

kubelet用于连接容器运行时,容器运行时除了docker外,当时还有一个rkt。

Google和Docker互相看不顺眼,K8s提出了CRI接口,docker不遵循CRI接口,K8s为了兼容docker,在kubelet上放了一个docker垫片(dockershim),通过dockershim去连接docker。

1.24版本以后谷歌去掉了dockershim,docker认怂了,说后面垫片docker来开发,docker把自己代码解耦,其中containerd作为高级容器运行时并交给了CNCF(已毕业);如果去掉docker,containerd现在仍然是docker公司的。runc是低级容器运行时,也是docker公司的。

K8s部署工具及托管平台

K8s高可用架构

  • etcd和master部署在一起

  • etcd单独部署


文章作者: 洪宇轩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 洪宇轩 !
评论
  目录