kubernetes 学习日志 - pod介绍
1、pod概念
1.1 分类
自助式pod(一旦死亡无法恢复)
控制器管理的pod
1.2 pod介绍
1.2.1 container
pause:基础容器,同pod一同启动
其他容器: 共用pause的网络栈和存储卷
网络栈:pod中的容器没有自己独立的ip地址,容器中的进程不隔离,在同一个pod中容器中的端口不能冲突(冲突会无限重启)
1.3 控制器类型
1.3.1 ReplicationController&ReplicaSet&Deplovment
差别:
RS相比于RC支持pod的标签访问
Deplovment相比于RS支持滚动更新
滚动更新:将三个pod中V1版本的镜像更新为V2版本
滚动更新步骤:
deplovment创建一个新的RS-1,在RS-1中创建一个新版本镜像的pod,同时将RS中旧版本镜像的pod退出,依次执行。
HPA:监视pod中的资源占有效率来动态扩展pod
1.3.2 StatefulSet
docker:无状态服务
mysql:有状态服务
1.3.3 DaemonSet
1.3.4 Job、CronJob
2.1 服务发现
pod由同一个deplovment创建或pod具有同一组标签
service:client通过server(ip+port)访问pod,(RR算法轮询)
集群组成:
k8s集群的实现
mysql:statefulSet管理器,mysql的podName不变,其他容器可直接访问
Php-fpm、Squid:Deplovment管理器,通过控制期望副本
Serveice:NodePort或Ingress对外访问
2 网络通讯方式
2.1 介绍
2.2 通讯方式:
2.2.1 Flannel介绍
2.2.2 k8s+Flannel实现不同主机间的pod访问
2.2.3 过程图
2.2.4 ETCD和Flannel的关系