pod定义详解
下面是一个完整的yaml格式定义的文件,注意格式,子集包含关系,不要有tab,要用空格。不是所有的元素都要写,按照实际应用场景配置即可。
定义一个简单pod(最好把docker源改成国内的)
apiVersion: v1
kind: Pod
metadata:
name: hello-world
namespace: default
spec:
restartPolicy: OnFailure
containers:
- name: hello
image: "ubuntu:14.04"
command: ["/bin/echo","hello","world"]
pod文件解释:
apiVersion: v1//k8s版本
kind: pod//声明API对象类型这里是pod
metadata:
name:hello-word //pod名字必须在namespace中是唯一
spec://配置pod具体配置
restartPolicy: OnFailure // pod重启策略 [Always默认策略,当容器退出时总是重启容器|Never当容器退出时,从不重启|OnFailure容器正常退出不会再重新启动,退出码非0时才重启容器]
containers: //pod中的容器列表,可以有多个容器
- name: hello //容器名字,在一个pod中唯一
image: "ubuntu:14.04" //镜像名字
command: ["/bin/echo","hello","word"]//设置容器的启动命令
创建pod
[root@kubernetes-master pods]# kubectl create -f helloworld.yml
pod "hello-word" created
查看pod状态,状态不是runing而是完成,说明容器运行完成已经退出了
查看容器log输出
[root@kubernetes-master pods]# kubectl logs hello-world
hello world
这里要说一下command和args2个参数:
pod中定义env
容器获取pod信息
1 apiVersion: v1 2 kind: Pod 3 metadata: 4 name: print-pod-info 5 namespace: default 6 spec: 7 containers: 8 - name: my-pod 9 image: busybox 10 resources: 11 requests: 12 memory: "32Mi" 13 cpu: "125m" 14 limits: 15 memory: "64Mi" 16 cpu: "250m" 17 env: 18 - name: MY_POD 19 valueFrom: 20 fieldRef: 21 fieldPath: metadata.name 22 - name: MY_POD_NAMESPACE 23 valueFrom: 24 fieldRef: 25 fieldPath: metadata.namespace 26 - name: MY_POD_IP 27 valueFrom: 28 fieldRef: 29 fieldPath: status.podIP 30 - name: MY_POD_SERVICE_ACCOUNT 31 valueFrom: 32 fieldRef: 33 fieldPath: spec.serviceAccountName 34 - name: MY_CPU_REQUEST 35 valueFrom: 36 resourceFieldRef: 37 containerName: my-pod 38 resource: requests.cpu 39 - name: MY_CPU_LIMIT 40 valueFrom: 41 resourceFieldRef: 42 containerName: my-pod 43 resource: limits.cpu 44 - name: MY_MEM_REQUEST 45 valueFrom: 46 resourceFieldRef: 47 containerName: my-pod 48 resource: requests.memory 49 - name: MY_MEM_LIMIT 50 valueFrom: 51 resourceFieldRef: 52 containerName: my-pod 53 resource: limits.memory 54 command: ["/bin/sh","-c","while true;do sleep 5;done"]