k8s 101
一、使用场景
容器编排
动态扩容
出现故障时自愈
滚动升级、回滚
二、安装
可以使用kubeadm安装
三、本质
为用户提供一个容器编排工具,一套基于容器构建分布式系统的基础依赖
四、构成
Master
kube-apiserver:负责API服务
kube-scheduler:负责调度
kube-controller-manager:负责容器编排
Etcd:key-value分布式数据库,管理配置信息和服务发现
Node(服务器节点,可以运行多个Pod)
kubelet:工作节点执行操作的agent,负责容器生命周期管理,上报Pod运行状态
kube-proxy:保证每个工作节点可以获取唯一的IP地址
Pod(本质是一个进程组,原子调度单位)
共享network namespace,也可以声明共享一个volume
通过将yaml文件提交到API Server,Pod等待、运行、失败、成功
Deployment(管理扩容、更新、可扩展的Pod)
控制ReplicaSet版本,ReplicaSet控制Pod副本数
版本回滚
逐步更新
Service
为Pod提供可靠且稳定的网络(DNS+IP+端口)
为一组Pod提供负载均衡
服务注册流程
服务发现流程
Volume(存储)
PV(Persistent Volume):持久化存储卷,Attach、Mount
PVC(Persistent Volume Claim):Pod希望使用的PV的属性
StorageClass:创建PV的模版
CSI(Container Storage Interface):用于开发存储插件
使用过程
StatefulSet(部署、管理有状态的应用)
每一个Pod副本都有可预知且保持不变的名字、DNS主机名和独立的卷
创建过程
创建一个StorageClass,用于动态创建PV
创建一个PVC,用于声明使用PV
创建一个headless service,当关联到StatefulSet时,为每个匹配到的Pod创建可预知的DNS解析项
创建StatefulSet,指定Service、SC及PVC
DaemonSet(管理守护进程)
运行在集群里每一个节点上
当新的Node加入集群后,该Pod会自动在新节点上被创建出来,当旧节点删除后,该Pod也会被回收
离线业务
Job(离线任务)
CronJob(定时任务)
五、指令
kubectl apply:运行yaml文件
kubectl get:检查运行状态
kubectl describe:查看API对象细节
kubectl exec: 进入Pod
kubectl delete:删除Pod