K8s
一.概述
- Docker 是一个容器化平台,而 k8s 是 Docker 等容器平台的协调器。
- 打包成容器镜像(有依赖的环境:操作系统,库等)->容器实例
- 在业务发展初期只有几个微服务,这时用 Docker 就足够了,但随着业务规模逐渐扩大,容器越来越多,运维人员的工作越来越复杂,这个时候就需要编排系统解救,比如k8s。
二.基本架构

- K-proxy:负责外部访问的网络
三.资源
k8s中资源创建方式
- 命令行:如
- YAML:kubectl apply -f xxx.yml
NameSpace:名称空间,对集群进行资源隔离划分,默认只隔离资源,不隔离网络。

pod:k8s将docker中的容器封装成pod,每一个pod可以管理多个容器

deploymenet:控制Pod

- 多副本:比如创建一个deloyment,可以创建多个pod
- 自愈:比如某个pod自己挂断了,deployment会自动重新拉起新的pod
- 扩缩容:比如某个应用负载过高,需要加几个节点,加几个pod,就可以使用改功能
- 版本回退:可以保存多个版本revision
// 多副本
kubectl create deployment xxx --image-nginx --replicas=3
// 扩缩容
kubectl scale deploy/xxx --replicas=5
四.存储抽象
每个pod如果将数据挂在到自己所在的主机,那么pod消亡,或者pod重新在其他主机上启动,数据就会丢失,所以所有的pod共享一个公共的存储空间比较合理。
PV和PVC:

- pv:每一个pvc相当于一个存储空间,都有自己的大小
- pvc:每一个pod需要用到存储空间,都要定义一个pvc,根据需要的pvc大小,可以固定一个pv。当pod消亡, pv中的数据不变,当pvc删掉的话,pv中的数据可以被回收
ConfigMap:就是将一个应用的配置文件放入k8s的配置集(ConfigMap)中,这个配置集是存放在k8s的组件etcd(资料库)中
kubectl create cm xxx.conf -- from-file=xxx.conf
在yaml中,先创建configMap,然后pod绑定configMap

五.helm包
helm:使用原生的k8s部署方式xxx.yaml方式,会有很多yaml文件,无法管理,helm其实就是把yaml进行管理。
概念:
- Chart:代表Helm包(相当于yarm文件)
- Repository:就是用来存放和共享Chart的地方,可以类比成Maven仓库。
- Release:运行在K8s集群中的Chart的实例,一个Chart可以在同一个集群中安装多次。Chart就像流水线中初始化好的模板,Release就是这个“模板”所生产出来的各个产品。安装helm包就是做一些资源操作,比如创建ConfigMap,PVC等

浙公网安备 33010602011771号