--ConfigMap
ConfigMap是一种API对象,用来将非加密数据保存到键值对中。可以用作环境变量、命令行参数或者存储卷中的配置文件。
ConfigMap可以将环境变量配置信息和容器镜像解耦,便于应用配置的修改。如果需要存储加密信息时可以使用Secret对象。
--Deployment
Deployment为Pod和Replica Set提供声明式更新。
你只需要在 Deployment 中描述您想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。您可以定义一个全新的 Deployment 来创建 ReplicaSet或者删除已有的 Deployment 并创建一个新的来替换。
Deployment可以帮我们做什么
1、定义一组Pod期望数量,Controller会维持Pod数量与期望数量一致
2、配置Pod的发布方式,controller会按照给定的策略更新Pod,保证更新过程中不可用Pod维持在限定数量范围内
3、如果发布有问题支持回滚
Deployment控制器简单实现如下:
1、Deployment Controller从Etcd中获取到所有携带 “app:nginx”标签的Pod,然后统计它们的数量,这就是实际状态
2、Deployment对象的replicas的值就是期望状态
3、Deployment Controller将两个状态做比较,然后根据比较结果,确定是创建Pod,还是删除已有Pod
deployment.yaml中label配置:
1、在deployment.yaml中必须写spec.selector.matchLabels
2、在定义pod模板时,必须定义spec.template.metadata.lables,因为spec.selector.matchLabels是必须字段,而它又必须和spec.template.metadata.lables的键值一致。
3、spec.template.metadata.lables里面定义的内容,会应用到spec.template.spec下定义的所有pod副本中,在spec.template.spec.containers里面不能定义labels标签