生成yaml文件创建pod
- 使用yaml文件可以指定各种属性,生成yaml文件的命令如下:
kubectl run 名字 --image=镜像 --dry-run=client -o yaml > pod.yaml
如:
kubectl run pod1 --image=nginx --dry-run=client -o yaml > pod1.yaml
--dry-run=client
:模拟创建pod,但不会真的创建
-o yaml > pod.yaml
:以yaml文件的格式输出,然后把结果重定向到pod.yaml
里
- yaml文件中的常见参数
- yaml文件的写法是分级写的,子级和父级之间要缩进两个空格,子级第一个位置可以以“-”开头,这个“-”与父级对齐。
- 第一级参数
- apiVersion:指定pod的apiVersion,是固定的值v1。
- kind:指定当前yaml要创建的类型是pod,与apiVersion是对应的。
- metadata:用于指定pod的元数据信息,包括pod名、pod标签和所在命名空间等信息
- spec:定义容器和各种策略。
- metadata的二级参数
- name:定义pod的名字。
- namespace:定义pod所在的命名空间。
- labels:定义pod的标签,格式为 key:value。
- spec的二级参数
- containers:定义容器。
- restartPolicy:定义pod的重启策略。
- dnsPolicy:定义DNS策略。
- spec.containers的三级参数,第一个参数以“-”开头
- images:定义容器所使用的镜像。
- imagePullPolicy:定义镜像的下载策略。
- name:容器的名字。
- command:指定容器里运行的进程,不写则为镜像里默认的进程。
- ports:指定容器所使用的端口。
- env:定义变量。
- resources:定义资源限制。
- spec.containers.ports的参数,第一个参数以“-”开头
- name:端口的名字。
- containerPort:容器所使用的端口,仅用作标记,应根据镜像所使用的端口指定。
- protocol:设置端口协议,是TCP还是UDP。
- spec.containers.env的参数,第一个参数以“-”开头
- name:变量名。
- value:变量值,如果是数字的话,需要用引号引起来。
- 查看pod的参数,可以使用如下命令
# 查看pod的一级参数,可以使用如下命令
kubectl explain pods
# 查看参数下有几个参数
kubectl explain pods.spec
- 修改yaml文件
vi pod1.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: pod1
name: pod1
spec:
containers:
- command: ["sh","-c","echo aa;sleep 1000"]
image: nginx
imagePullPolicy: IfNotPresent
name: c1
resources: {}
- image: nginx
imagePullPolicy: IfNotPresent
name: c2
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
- 创建pod,并查看
kubectl apply -f pod1.yaml
kubectl get pod
kubectl get pod -l run=pod1
kubectl logs pod1 -c c1
kubectl logs pod1 -c c2
- 查看pod属性,进入pod并获取bash
kubectl describe pod pod1
kubectl exec -it pod1 -c c2 -- bash
- 删除pod
kubectl delete -f pod1.yaml