一、POD理解
docker调度的是容器,在k8s集群中,最小的调度单元是Pod,一个POD里面可以有一个容器或多个容器,但业务使用中,通常会拆分为应用一个POD,数据库一个POD,以达到有效的安全与资源分布管理。
二、使用yaml格式定义POD
#一个POD包含两个容器
apiVersion: v1 #该Pod的版本信息,可通过命令查看
kind: Pod #创建一个pod的资源
metadata:
name: myblog #该pod资源的名称
namespace: luffy #该pod资源的命名空间
labels:
component: myblog #该pod资源的label标签归属
spec: #为该pod资源定义精确的信息
containers: #定义为容器
- name: myblog #第一个容器的名称
image: 10.3.153.200:5000/myblog:v1 #容器的镜像拉取
env: #该容器内的环境变量传输
- name: MYSQL_HOST
value: "127.0.0.1" #因一个pod下的容器,可直接访问本地数据库
- name: MYSQL_PASSWD
value: "123456"
ports: #容器定义发布端口,类同于expose
- containerPort: 8002
- name: mysql #第二个容器的名称
image: 10.3.153.200:5000/mysql:5.7-utf8
ports:
- containerPort: 3306
env:
- name: MYSQL_ROOT_PASSWORD
value: "123456"
- name: MYSQL_DATABASE
value: "myblog"
apiVersion: v1(版本含义)
kind: Pod(可通过以下命令查看、K8S的所有资源)
metadata
帮助唯一性标识对象的一些数据,包括一个 name 字符串、UID 和可选的 namespace、labels标签
spec
对象 spec 的精确格式对每个 Kubernetes 对象来说是不同的,包含了特定于该对象的嵌套字段
containers
定义该POD下的容器信息,如容器名称、镜像、端口、磁盘等等信息