K8S篇(基本介绍)
目录
一、什么是Kubernetes?
二、Kubernetes管理员认证(CKA)
1. 简介
2. 考试难易程度
3. 考试时长
4. 多少分及格
5. 考试费用
三、Kubernetes整体架构
Master
Nodes
四、Kubernetes架构及和核心组件
五、Kubernetes各个组件及功能
1. master组件
1.1. kube-apiserver
1.2. kube-controller-manager
1.3. kube-scheduler
1.4. etcd
2. node组件
2.1. kubelet
2.2. kube-proxy
2.3. docker
六、Kubernetes核心概念
1. pod
2. controllers
3. service
4. storage
5. pollcies策略
6. 其他
一、什么是Kubernetes?
Kubernetes这个单词来自于希腊语,含义是 舵手 或 领航员;
Production-Grade Container Orchestration Automated container deployment, scaling, and
management
生产环境级别的容器编排
编排是什么意思?
- 按照一定的目的依次排列;
- 调配、安排;
Kubernetes,也称为K8S,其中8是代表中间“ubernete”的8个字符,是Google在2014年开源的一个容器编
排引擎,用于自动化容器化应用程序的部署、规划、扩展和管理,它将组成应用程序的容器分组为逻辑单元,以便
于管理和发现,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并
且高效,很多细节都不需要运维人员去进行复杂的手工配置和处理;
Kubernetes拥有Google在生产环境上15年运行的经验,并结合了社区中最佳实践;
K8S是 CNCF 毕业的项目,本来Kubernetes是Google的内部项目,后来开源出来,又后来为了其茁壮成长,捐
给了CNCF;
CNCF全称Cloud Native Computing Foundation(云原生计算基金会)
- 官网:Kubernetes
- 代码:GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management
Kubernetes是采用Go语言开发的,Go语言是谷歌2009发布的一款开源编程语言;
二、Kubernetes管理员认证(CKA)
1. 简介
CKA全称Certified Kubernetes Administrator,是Linux基金会和Cloud Native Computing Foundation
(CNCF)官方推出的全球Kubernetes管理员认证,对于技术团队,CKA认证可以作为团队成员的技术能力的一
个考察标准,也可以作为整个团队对Kubernetes云平台的管理能力的有力证明;
2. 考试难易程度
考试只允查阅官方文档,在考试过程中你只能去
- Kubernetes
- GitHub · Build and ship software on a single, collaborative platform · GitHub
如果去了其它的网站,按作弊处理;
3. 考试时长
考试时间为3小时;
4. 多少分及格
CKA满分100分,66分及格;
5. 考试费用
美元:$300
人民币:¥2088
有一次免费重考的机会,一年后过期;
三、Kubernetes整体架构
Master
k8s集群控制节点,对集群进行调度管理,接受集群外用户去集群操作请求;
Master Node 由 API Server、Scheduler、ClusterState Store(ETCD 数据库)和 Controller 、
MangerServer 所组成;
Nodes
集群工作节点,运行用户业务应用容器;
Nodes节点也叫Worker Node,包含kubelet、kube proxy 和 Pod(Container Runtime);
四、Kubernetes架构及和核心组件
API server是所有请求的唯一入口;
api server管理所有的事务,并把信息记录到etcd数据库中,etcd有一个自动服务发现的特性机制,etcd会搭建
有三个节点的集群,
实现三副本;
scheduler 调度器用来调度资源,查看业务节点的资源情况,确定在哪个node上创建pod,把指令告知给api
server;
控制管理器controller-manager管理pod;
pod可以分为有状态和无状态的pod,一个pod里最好只放一个容器;
api server把任务下发给业务节点的kubelet去执行;
客户访问通过kube-proxy去访问pod;
pod下面的不一定是docker,还有别的容器;
一般pod中只包含一个容器,除了一种情况除外,那就是elk,elk会在pod内多放一个logstash去收集日志;
五、Kubernetes各个组件及功能
1. master组件
1.1. kube-apiserver
kubernetes api,集群的统一入口,各组件之间的协调者,以restful api提供接口服务,
所有对象资源的增删改查和监听操作都交给apiserver处理后在提交给etcd存储记录;
1.2. kube-controller-manager
处理集群中常规的后台任务,一种资源对应一个控制器,controller-manager就是负责管理这些控制器的;
1.3. kube-scheduler
根据调度算法为新创建的pod选择一个node节点,可以任意部署,可以部署在同一个节点上,也可以部署在不同
节点上;
1.4. etcd
分布式键值存储系统,用户保存集群状态数据,比如pod、service等对象信息;
2. node组件
2.1. kubelet
kubelet时master在node节点上的代理agent,管理本node运行容器的生命周期,比如创建容器、pod挂载数据
卷、下载sercet、获取容器和节点状态等工作,kubelet将每个pod转换成一组容器;
2.2. kube-proxy
在node节点上实现pod的网络代理,维护网络规则和四层的负载均衡工作;
2.3. docker
容器引擎,运行容器;
六、Kubernetes核心概念
1. pod
最小部署单元;
一组容器的集合;
一个pod中的容器共享网络命名空间;
pod是短暂的;
2. controllers
replicaset:确保预期的pod副本数量;
deployment:无状态应用部署,比如nginx、apache,一定程度上的增减不会影响客户体验;
statefulset:有状态应用部署,是独一无二型的,会影响到客户的体验;
daemonset:确保所有node运行同一个pod,确保pod在统一命名空间;
job:一次性任务;
cronjob:定时任务;
3. service
防止pod失联;
定义一组pod的访问策略;
确保了每个pod的独立性和安全性;
4. storage
volumes
persistent volumes
5. pollcies策略
resource quotas
6. 其他
label:标签,附加到某个资源上,用户关联对象、查询和筛选;
namespaces:命名空间,将对象从逻辑上隔离;
annotations:注释;
Kubectl:k8s提供的终端控制命令;
Kubeadm:可以用来初始化或加入一个k8s集群;