文章目录
- POD 的基本用法
- 1.POD运行说明
- 2.POD封装容器的用法
- 3. POD 共享的处理
- 4.POD 配置
- 4.1 ConfigMap
POD 的基本用法
1.POD运行说明
K8S 对容器运行的要求是主程序一直要在前台执行,如果使用 nohup
后台运行的话, 在nohup
执行完毕后则认为POD已经执行结束。接下来会立刻销毁POD。
如果这个时候陪配置了 ReplicationController, 监控到POD已经停止,就又有启动一个新的,这样就会陷入不断启动销毁的循环。所以对要求对制作的docker镜像必须以一个前台的命令作为启动命。
2.POD封装容器的用法
关于POD对于容器的封装要不要把多个耦合度较高的容器封装到一个POD,还没有定论,两种方式各有优劣。这里只是讲POD如何封装使用一个或容器。
容器定义在POD对象yaml的spec.containers
下面。
单个容器示例:
apiVersion: v1
kind: Pod
metadata:
labels:
pod-template-hash: 74f56b7695
workload.user.cattle.io/workloadselector: deployment-pa-dev-haep
name: haep-74f56b7695-h442r
namespace: pa-dev
spec:
containers:
- name: haep
image: registry.com/ecf/haep:2.2.0
env:
- name: JAVA_TOOL_OPTIONS
value: -Xmx512m
imagePullPolicy: Always
ports:
- containerPort: 8080
hostPort: 80
name: 80tcp8080
protocol: TCP
简单说明:
- apiVersion(String) ,k8s中 APIServer的版本版本号
- kind(String), K8S 资源对象的类型,这里是 Pod对象
- metadata(Object), 定义资源对象的基础属性,对应的label,name和所属的命名空间等
- spec(Object), 对象的详细属性定义,这里是Pod的详细信息
下面的就是pod对象的一些详细属性了 - containers(Object), pod对象的容器定义
- env (List),表示POD容器使用的环境变量,
name
表示变量名称,value
表示变量值 - image (String),表示容器所使用的镜像
- imagePullPolicy (Boolean),表示Pod创建的时候是否总是拉去镜像
- name (String),表示容器名称
- ports (List) , 容器需要暴露的端口
- containerPort(int),暴露容器的端口
- hostPort (int)暴露所在主机的端口,(每个主机只能暴露一个端口,不然端口冲突)
- protocol(String) 使用的协议默认TCP
使用如上的 ports定义则表示把容器的 8080 映射到主机的80
3. POD 共享的处理
当两个容器形成紧密耦合的关系,可以姜两个容器定义在一个POD 中,一个POD中的多个容器可以共享POD级别的Volume(卷),同时两个容器之前通过 localhost+端口就可以实现互相访问。
4.POD 配置
4.1 ConfigMap
ConfigMap 主要作用
- 容器内的环境变量
- 容器启动的命令参数
- 以volume的形式挂载为容器内部的文件或者目录
简述:ConfigMap 一个月或者多个key-value 键值对的方式保存在K8s 系统里面来供应用使用。既可以用作环境变量,可以用作一个完整的配置文件(比如redis 的redis.conf配置文件),当让也可以用于定义脚本。