Pod相位状态
# 样例
--- # Yaml 文件起始标志
kind: Pod # 当前创建资源的类型
apiVersion: v1 # 当前资源对应的版本
metadata: # 属性信息,元数据
name: mypod # 属性信息,资源的名称
spec: # 资源的特性描述(规约)
containers: # 容器资源特征描述
- name: linux # 容器名称
image: myos:latest # 启动容器使用的镜像
stdin: true # 是否启用交互式(值为False时可以省略)
tty: true # 是否分配终端(值为False时可以省略)
ports: # 声明容器使用的网络协议
- protocol: TCP # 声明容器使用的协议
containerPort: 80 # 声明容器使用的端口号
[root@master ~]# vim myhttpd.yaml
---
kind: Pod
apiVersion: v1
metadata:
name: myhttpd
spec:
terminationGracePeriodSeconds: 0
restartPolicy: Always
containers:
- name: apache
image: myos:httpd
imagePullPolicy: IfNotPresent
ports:
- protocol: TCP
containerPort: 80
[root@master ~]# kubectl apply -f myhttpd.yaml
pod/myhttpd created
[root@master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
myhttpd 1/1 Running 0 3s 10.244.3.10 node-0003
[root@master ~]# curl http://10.244.3.10
Welcome to The Apache.
# 样例
--- # Yaml 文件起始标志
kind: Pod # 当前创建资源的类型
apiVersion: v1 # 当前资源对应的版本
metadata: # 属性信息,元数据
name: mynginx # 属性信息,资源的名称
spec: # 资源的特性描述(规约)
containers: # 容器资源特征描述
- name: nginx # 容器名称
image: myos:nginx # 启动容器使用的镜像
ports: # 声明容器使用的网络协议
- protocol: TCP # 声明容器使用的协议
containerPort: 80 # 声明容器使用的端口号
- name: php # 容器名称
image: myos:phpfpm # 启动容器使用的镜像
[root@master ~]# vim mynginx.yaml
---
kind: Pod
apiVersion: v1
metadata:
name: mynginx
spec:
containers:
- name: nginx
image: myos:nginx
ports:
- protocol: TCP
containerPort: 80
- name: php
image: myos:phpfpm
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mynginx 2/2 Running 0 2s
# 进入 mynginx 这个 Pod 中,容器 nginx
[root@master ~]# kubectl exec -it mynginx -c nginx -- /bin/bash
# 查看 mynginx 这个 Pod 中,容器 nginx 的日志
[root@master ~]# kubectl logs mynginx -c nginx
# 进入 mynginx 这个 Pod 中,容器 php
[root@master ~]# kubectl exec -it mynginx -c php -- /bin/bash
# 查看 mynginx 这个 Pod 中,容器 php 的日志
[root@master ~]# kubectl logs mynginx -c php
什么是静态Pod
静态Pod是由kubelet守护进程直接管理的Pod,不需要API服务器监管。与由控制面管理的Pod不同
kubelet监视每个静态Pod(在它崩溃之后重新启动)
静态Pod永远都会绑定到一个指定节点上的kubelet
静态Pod的spec不能引用其他API对象
静态Pod配置路径:/var/lib/kubelet/config.yaml
staticPodPath:/etc/kubernetes/manifests
创建静态Pod
[root@master ~]# cp -a mypod.yaml /etc/kubernetes/manifests/
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mypod-master 1/1 Running 0 10s
[root@master ~]# rm -f /etc/kubernetes/manifests/mypod.yaml
[root@master ~]# kubectl get pods
No resources found in default namespace.
简单命令
[root@master ~]# vim mycmd.yaml
---
kind: Pod
apiVersion: v1
metadata:
name: mycmd
spec:
terminationGracePeriodSeconds: 0
restartPolicy: Never
containers:
- name: linux
image: myos:v2009
imagePullPolicy: IfNotPresent
command: ["sleep"]
args: ["10"]
[root@master ~]# kubectl apply -f mycmd.yaml
pod/mycmd created
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mycmd 1/1 Running 0 3s
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mycmd 0/1 Completed 0 11s
[root@master ~]# kubectl delete -f mycmd.yaml
pod "mycmd" deleted
嵌入式脚本
[root@master ~]# vim mycmd.yaml
---
kind: Pod
apiVersion: v1
metadata:
name: mycmd
spec:
terminationGracePeriodSeconds: 0
restartPolicy: Always
containers:
- name: linux
image: myos:v2009
imagePullPolicy: IfNotPresent
command: ["/bin/bash"]
args:
- -c
- |
while true;do
sleep 5
echo "hello world."
done
[root@master ~]# kubectl apply -f mycmd.yaml
pod/mycmd created
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
mycmd 1/1 Running 0 6s
[root@master ~]# kubectl logs mycmd
hello world.
hello world.
hello world.
[root@master ~]# kubectl delete -f mycmd.yaml
pod "mycmd" deleted
[root@master ~]# kubectl get nodes node-0001
NAME STATUS ROLES AGE VERSION
node-0001 Ready <none> 3h v1.22.5
[root@master ~]# vim myhttpd.yaml
---
kind: Pod
apiVersion: v1
metadata:
name: myhttpd
spec:
terminationGracePeriodSeconds: 0
restartPolicy: Always
nodeName: node-0001 # 基于节点名称进行调度
containers:
- name: apache
image: myos:httpd
imagePullPolicy: IfNotPresent
ports:
- protocol: TCP
containerPort: 80
[root@master ~]# kubectl apply -f myhttpd.yaml
pod/myhttpd created
[root@master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
myhttpd 1/1 Running 0 3s 10.244.1.3 node-0001