pod-summary
小结
- 实现k8s平台与特定的容器运行时解耦,提供更加灵活的业务部署方式,引入了Pod概念,作为k8s平台中业务服务运行时的最小调度单元
- k8s使用yaml格式定义资源文件,yaml比json更加简洁
- 通过kubectl create|apply| get | exec | logs | delete 等操作k8s资源,必须指定namespace
- 每启动一个Pod,为了实现网络空间共享,会先创建pause容器,并把其他容器网络加入该容器,来实现Pod内所有容器使用同一个网络空间
- 通过nodeSelector选择器影响k8s的调度行为,实现服务定点部署
- Pod重建后Pod IP发生变化,所以使用Service类型的资源为Pod创建上层的VIP对外提供服务
- 通过livenessProbe和readinessProbe实现Pod的存活性和就绪健康检查
- 通过requests和limit分别限定容器初始资源申请与最高上限资源申请
- 通过configMap和Secret来管理业务应用所需的配置(包含环境变量和配置文件等)
- Pod通过initContainer和lifecycle分别来执行初始化、pod启动和删除时候的操作,使得功能更加全面和灵活
- 编写yaml讲究方法,学习k8s,养成从官方网站查询知识的习惯
做了哪些工作:
- 定义Pod.yaml,将
eladmin-api
,redis
,mysql
等服务使用Pod来启动 - mysql数据持久化,各应用添加了健康检查和资源限制
- yaml文件中的环境变量存在账号密码明文等敏感信息,使用configMap和Secret来统一配置,优化部署
只使用Pod, 面临的问题:
- 业务应用启动多个副本
- 集群外部如何访问Pod服务
- 运行业务Pod的某个节点挂了,可以自动帮我把Pod转移到集群中的可用节点启动起来
- 我的业务应用功能是收集节点监控数据,需要把Pod运行在k8集群的各个节点上