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配置文件),当让也可以用于定义脚本。
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐