Kubernetes 架构及部署、调度、状态管理流程简介

全文首发在个人博客上:Kubernetes 架构及部署、调度、状态管理流程简介_

Kubernetes简称k8s,是用于自动部署、扩展和管理“容器化应用程序”的开源系统。该系统由Google设计并捐赠给Cloud Native Computing Foundation来使用。 它旨在提供“跨主机集群的自动部署、扩展以及运行应用程序容器的平台”。 它支持一系列容器工具,包括Docker等。它是当前绝对主流的容器管理平台。目前阿里(ACK)、字节( Gödel )、美团(LAR)内部的资源管理系统都基于k8s。

K8s 架构

请添加图片描述

K8s中的一些重要组件的简介如下:

  • Etcd:基于Raft的分布式键值存储系统,保存了整个集群的状态。
  • Pod:集群中运行部署服务的最小单元,一个Pod可由多个Docker及网络、存储组件组成。
  • API Server:所有资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
  • Controller manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • Scheduler:负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • Kubelet:负责维护节点内的Pods和他们上面的容器,同时也负责Volume(CVI)和网络(CNI)的管理;
  • Kube-Proxy:负责为 Service 提供 cluster 内部的服务发现和负载均衡

Etcd

Etcd主要用于保存集群所有的网络配置和对象的状态信息。整个 Kubernetes 系统中一共有两个服务需要用到 etcd 用来协同和存储配置,分别是:

  • 网络插件 flannel、对于其它网络插件也需要用到 etcd 存储网络的配置信息
  • Kubernetes 本身,包括各种对象的状态和元信息配置

Etcd是基于Raft的分布式键值存储系统,可以查考我之前的关于Raft的文章

我们在安装 Flannel 的时候配置了 FLANNEL_ETCD_PREFIX=“/kube-centos/network” 参数,这是 Flannel 查询 etcd 的目录地址。

查看 Etcd 中存储的 flannel 网络信息:

$ etcdctl --ca-file=/etc/kubernetes/ssl/ca.pem --cert-file=/etc/kubernetes/ssl/kubernetes.pem --key-file=/etc/kubernetes/ssl/kubernetes-key.pem ls /kube-centos/network -r
2018-01-19 18:38:22.768145 I | warning: ignoring ServerName for user-provided CA for backwards compatibility is deprecated
/kube-centos/network/config
/kube-centos/network/subnets
/kube-centos/network/subnets/172.30.31.0-24
/kube-centos/network/subnets/172.30.20.0-24
/kube-centos/network/subnets/172.30.23.0-24
```查看 flannel 的配置:```bash
$ etcdctl --ca-file=/etc/kubernetes/ssl/ca.pem --cert-file=/etc/kubernetes/ssl/kubernetes.pem --key-file=/etc/kubernetes/ssl/kubernetes-key.pem get /kube-centos/network/config
2018-01-19 18:38:22.768145 I | warning: ignorin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值