内容介绍
什么是Kubernetes
Kubernetes的架构
Kubernetes的核心概念与API
尝试一下Kubernetes 吧
一、什么是Kubernetes
Kubernetes是一个工业级容器编排平台
Kubernetes源于希腊语,意为“舵手”或“飞行员”
k8s是通过将8个字母“ubernete”替换为8而导出的缩写
1、自动化的容器编排平台
部署
弹性
管理
2、核心功能
服务发现与负载均衡
自动发布与回滚
容器自动装箱
配置与密文管理
存储编排
批量执行
自动容器恢复
水平伸缩
3、Kubernetes -调度
![](https://i-blog.csdnimg.cn/blog_migrate/83944454cdb8e6c2c6710ab16bdfa125.png)
可以把用户提交的容器放到Kubernetes集群的某一台节点上去,Kubernetes的调度器是执行这项能力的组件,可观察被调度容器的大小和规格,然后在集群中找到一台空闲机器进行放置操作。
4、Kubernetes -自动恢复
节点健康检查的功能,可以检测集群中所有的宿主机,当宿主机本身出现故障或者软件出现故障时,节点健康检查会自动发现,Kubernetes会将进行失败的节点进行迁移,迁移到正在健康运行的宿主机上,来完成集群内容器的自动恢复。
![](https://i-blog.csdnimg.cn/blog_migrate/1b1545ea10b43ca04c564558ef6a2ba6.png)
5、Kubernetes -水平伸缩
检测业务上所承担的负载,如果这个业务本身的CPU利用率过高或者响应时间过长,可以对业务进行扩容。通过负载均衡,来提高响应时间。
![](https://i-blog.csdnimg.cn/blog_migrate/45ff3d8761bc3c0e77155b96ddc75b4f.png)
二、Kubernetes的架构
Master作为中央管控节点,会与NODE进行一个连接,把希望状态或者想执行的命令下发给Master,Master会把这些命令或者状态下发给相应节点,这是最终的执行。
![](https://i-blog.csdnimg.cn/blog_migrate/6f111fbd9984dcd58c5a6ced37f76fcf.png)
1、Kubernetes的架构一Master
![](https://i-blog.csdnimg.cn/blog_migrate/acff5a8a00daa0dfb0b54238f5b1d896.png)
四个主要组件:
API Server: 处理API操Kubernetes中所有组件会与API Server进行连接,组件与组件一般不进行独立的连接,都依赖API Server进行消息传送
Controller:控制器,用于完成对集群状态的管理
Scheduler:调度器,完成调度的操作
etcd:分布式的存储系统,API Server所需要的源信息都被放在其中
2、Kubernetes的架构一Node
一个Pod运行一个或者多个容器,真正去运行这些Pod的组件是Kubeletes,每个应用负载会以pod的运行状态提交到组件中,向节点下发信息
![](https://i-blog.csdnimg.cn/blog_migrate/3ef698a68b43e456d2830ddcb6576bc1.png)
3、Kubernetes的架构–例子
用户可以通过UI或者CRI提交一个Pod给Kubelet进行一个部署,而pod首先会通过UI或者CRI提交给Kubernetes,下一步API Server会把信息写入存储系统,Scheduler得到信息有一个pod需要调度,Scheduler会根据其进行决策
![](https://i-blog.csdnimg.cn/blog_migrate/02abc19f7215dd2ec96305d79fb4b445.png)
三、Kubernetes的核心概念与API
1、核心概念-Pod
最小的调度以及资源单元
由一个或者多个容器组成
定义容器运行的方式(Command、环境变量等)
提供给容器共享的运行环境(网络、进程空间)
2、核心概念-Volume
声明在Pod 中的容器可访问的文件目录
可以被挂载在Pod中一个(或者多个)容器的指定路径下
支持多种后端存储的抽象
本地存储、分布式存储、云存储…
3、核心概念-Deployment
定义一组Pod的副本数目、版本等
通过控制器(Controller)维持Pod的数目
自动恢复失败的Pod
通过控制器以指定的策略控制版本
滚动升级、重新生成、回滚等
4、核心概念-Service
提供访问一个或多个Pod 实例的稳定访问地址
支持多种访问方式实现
ClusterlP
NodePort
LoadBalancer
其他:hostNetWork、hostPort、ingress
5、核心概念一Namespaces
一个集群内部的逻辑隔离机制(鉴权、资源额度)
每个资源都属于一个Namespace
同一个Namespace 中的资源命名唯一
不同Namespace 中的资源可重名
6、APl一基础知识
HTTP +JSON/YAML
kubectl
Ul
curl
/api/v1/namespaces/$NAMESPACE/pods/$NAME
![](https://i-blog.csdnimg.cn/blog_migrate/da1b75687be9efa8903eea21c515883e.png)
7、APl -Label
一组Key:Value
可以被selector所查询
select color=red
资源集合的默认表达形式
例如Service 对应的一组Pod
四、尝试一下 Kubernetes 吧
1、安装Minikube
安装VirtualBox
https : / / www .virtualbox.org / wiki/ Downloads
安装MiniKube(中国版)
https :/ / yq.aliyun.com/ articles/ 221687
启动MiniKube
minikube start --vm-driver virtualbox
2、尝试一些命令吧!
1.提交一个ngnix deployment
kubectl apply -f https: / / k8s.io/examples/application/deployment.yaml
2.升级ngnix deployment
kubectl apply -f https: / /k8s.io/examples/application/deployment-update.yaml
3.扩容ngnix deployment
kubectl apply -f https: / / k8s.io/examples/application/deployment-scale.yaml