【Kubernetes实践指南】5.1-Kubernetes架构介绍
【前言】
2019年是互联网寒冬几乎成为不争的事实,在寒冬下,往往会暴露出很多被掩盖的事实,就像下面这个案例,看完之后,深有感触。
[attach]115[/attach]
作为运维工程师,坚持学习才是寒冬中的生存之道。Kubernetes的浪潮已经来了,不管我们是否愿意,生产中是否使用,Kubernetes已经不知不觉成为运维必备技能。本文介绍Kubernetes架构,作为入门的第一篇文章。
Kubernetes介绍
Kubernetes源于希腊语,意为“舵手”或“飞行员”,是用于自动部署,扩展和管理容器化应用程序的开源系统,由于K和S之间有8个字母,被简称为K8S。Kubernetes构建在Google 15年生产环境经验基础之上,可以将Kubernetes看作为Google内部的容器管理平台Borg和Omega的开源版本,当然他们之间是有一些差异的。
Kubernetes系统架构
Kubernetes被设计为Master和Node两个角色,Master为控制节点,Node为计算节点或者叫工作节点,在Master节点上有一个API Server服务,对外提供标准的RestAPI,这也是Kubernetes集群的入口,意外着只要和集群进行交互必须连接到API Server上。
[attach]109[/attach]
Master节点介绍
Kubernetes Master节点主要有4个组件,API Server、Scheduler、Controller、etcd。如下图所示:
[attach]112[/attach]
- API Server:提供Kubernetes API接口,主要处理Rest操作以及更新Etcd中的对象。是所有资源增删改查的唯一入口。
- Scheduler:绑定Pod到Node上,主要做资源调度。
- Controller Manager:所有其他群集级别的功能,目前由控制器Manager执行。资源对象的自动化控制中心,Kubernetes集群有很多控制器。
- Etcd:所有持久化的状态信息存储在Etcd中,这个是Kubernetes集群的数据库。
- Docker Engine:负责节点的容器的管理工作,最终创建出来的是一个Docker容器。
- Kubelet:安装在Node上的代理服务,和API Server进行通信,用来管理Pods以及容器、镜像、Volume等,实现对集群对节点的管理。
- Kube-proxy:安装在Node上的网络代理服务,提供网络代理以及负载均衡,实现与Service通讯。
- Replication Controller(新版本已经被ReplicaSet所替代)
- ReplicaSet(新版本被封装在Deployment中)
- Deployment:封装了Pod的副本管理、部署更新、回滚、扩容、缩容等功能。
- DaemonSet:保证所有的Node上有且只有一个Pod在运行。
- StatefulSet:有状态的应用,为Pod提供唯一的标识,它可以保证部署和scale的顺序。
- Job:使用Kubernetes运行单一任务。
- CronJob:使用Kubernetes运行定时任务。
[root@linux-node1 ~]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-54458cd494-hpn68 1/1 Running 0 9m7s 10.2.1.2 linux-node2.linuxhot.comService网络 Service是为Pod提供访问和负载均衡的网络地址段,如下图所示。nginx-54458cd494-r4mfq 1/1 Running 0 7m46s 10.2.1.3 linux-node2.linuxhot.com
[root@linux-node1 ~]# kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.1.0.1Kubernetes的组件和知识绝非如此,快速入门可以先了解这么多,下一章节,我们先快速的部署一个Kubernetes集群。 来新运维社区分享知识! 欢迎来新运维社区分享你的原创文章、博文、理念或者是对运维工程师有帮助的任何知识,如要加入K8S中国交流群,请添加新运维-小助手,备注:姓名-K8S。 (无备注不予处理,请理解!) [attach]113[/attach] 【小助手微信】 - END - 加入新运维社区,开启新征程! 牛人并不可怕,可怕的是牛人比我们还努力! [attach]114[/attach]443/TCP 64m nginx NodePort 10.1.216.23 80:30893/TCP 8m3s