Update 第二章——企业部署实战_K8S.md

This commit is contained in:
benjas 2020-03-22 09:02:16 +08:00
parent 4ba59c57dc
commit 78fc7f4b0c

View File

@ -1,18 +1,57 @@
第二章——企业部署实战_K8S
## 第二章——企业部署实战_K8S
#### 前言:如果你是新手,机器的名字及各种账户密码一定要和我的一样,先学一遍,再自己改
##### 前言:如果你是新手,机器的名字及各种账户密码一定要和我的一样,先学一遍,再自己改
> **WHAT:**用于管理云平台中多个主机上的容器化的应用Kubernetes的目标是让部署容器化的应用简单并且高效powerful,Kubernetes提供了应用部署规划更新维护的一种机制
>
> **WHY**为什么使用它因为它是管理docker容器最主流的编排工具
![1578569220099](assets/1578569220099.png)
![1578569228636](assets/1578569228636.png)
![1578569242246](assets/1578569242246.png)
![1578569443394](assets/1578569443394.png)
- Pod
- Pod是K8S里能够被运行的最小的逻辑单元原子单元
- 1个Pod里面可以运行多个容器它们共享UTS+NET+IPC名称空间
- 可以把Pod理解成豌豆荚而同一Pod内的每个容器是一颗颗豌豆
- 一个Pod里运行多个容器又叫边车SideCar模式
- Pod控制器
- Pod控制器是Pod启动的一种模板用来保证在K8S里启动的Pod始终按照人们的预期运行副本数、生命周期、健康状态检查...
- Pod内提供了众多的Pod控制器常用的有以下几种
- Deployment
- DaemonSet
- ReplicaSet
- StatefulSet
- Job
- Cronjob
- Name
- 由于K8S内部使用“资源”来定义每一种逻辑概念功能故每种“资源”都应该有自己的“名称”
- “资源”有api版本apiVersion类别kind、元数据metadata、定义清单spec、状态status等配置信息
- “名称”通常定义在“资源”的“元数据”信息里
- Namespace
- 随着项目增多、人员增加、集群规模的扩大需要一种能够隔离K8S内各种“资源”的方法这就是名称空间
- 名称空间可以理解尾K8S内部的虚拟集群组
- 不同名称空间内的“资源”名称可以相同,相同名称空间内的同种“资源”、“名称”不能相同
- 合理的使用K8S名称空间使得集群管理员能够更好的对交付到K8S里的服务进行分类管理和浏览
- K8S内默认存在的名称空间有default、kube-system、kube-public
- 查询K8S里特定“资源”要带上想应得名称空间
- Label
- 标签是K8S特色的管理方式便于分类管理资源对象
- 一个标签可以对应多个资源,一个资源也可以有多个标签,它们是多对多的关系
- 一个资源拥有多个标签,可以实现不同维度的管理
- 标签的组成key=value
- 与标签类似的还有一种“注解”annotations
- Label选择器
- 给资源打上标签后,可以使用标签选择器过滤指定的标签
- 标签选择器目前有两个:基于等值关系(等于、不等于)和基于集合关系(属于、不属于、存在)
- 许多资源支持内嵌标签选择器字段
- matchLabels
- matchExpressions
- Service
- 在K8S的世界里虽然每个Pod都会被分配一个单独的IP地址但这个IP地址会随着Pod的销毁而消失
- Service服务就是用来解决这个问题的核心概念
- 一个Service可以看作一组提供相同服务的Pod的对外访问接口
- Service作用与哪些Pod是通过标签选择器来定义的
- Ingress
- Ingress是K8S集群里工作在OSI网络参考模型下第7层的应用对外暴露的接口
- Service只能进行L4流量调度表现形式是ip+port
- Ingress则可以调度不同业务域、不同URL访问路径的业务流量
简单理解Pod可运行的原子name定义名字namespace名称空间放一堆名字label标签另外的名字service提供服务ingress通信