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







