1. Pod资源清单的编写
1.1 Pod运行单个容器的资源清单
##创建工作目录
mkdir -p /root/manifests/pods && cd /root/manifests/pods
vim 01-nginx.yaml
##指定api版本
apiVersion: v1
##指定资源类型
kind: Pod
##指定元数据
metadata:##指定名称name: myweb
##用户期望资源
spec:##定义容器资源containers:## 定义容器名称- name: nginx##定义容器镜像image: nginx:1.14.2
1.2 创建资源清单
kubectl apply -f 01-nginx.yaml
1.3 查看资源清单
kubectl get pods -o wide
1.4 删除资源清单
kubectl delete -f 01-nginx.yaml
1.5 访问测试
1.6 Pod运行两个容器的资源清单
## 1. 编写资源清单
cat 02-nginx-tomcat.yaml
apiVersion: v1
kind: Pod
metadata:name: nginx-tomcat
spec:containers:- name: nginximage: nginx:1.23.4-alpine- name: tomcat image: tomcat:jre8-alpine## 2. 创建容器
kubectl apply -f 02-nginx-tomcat.yaml## 3. 查看容器状态
kubectl get pods -o wide
1.7 测试访问
2. 故障排查
2.1 CrashLoopBackOff(容器未被阻塞,正在循环重启容器)
## 编写案例资源清单
vim
apiVersion: v1
kind: Pod
metadata:name: nginx-linux-004
spec:containers:- name: nginximage: nginx:1.23.4-alpine- name: linuximage: alpine
2.2 解决办法
cat 03-nginx-alpine.yaml
apiVersion: v1
kind: Pod
metadata:name: nginx-linux-004
spec:containers:- name: nginximage: nginx:1.23.4-alpine- name: linux image: alpine## 给容器分配标准输入 默认值位false#stdin: true## 给容器分配一个启动命令,修改Dockerfile的CMD指令#args: ["tail","-f","/etc/hosts"]## 给容器分配一个启动命令。相当于ENTRYPOINTcommand:- "tail"args:- "-f"- "/etc/hosts"##以上方法任选其一
2.3 宿主机和容器之间实现数据拷贝
## 将容器文件拷贝到宿主机
kubectl cp pod名称:文件路径 指定宿主机路径## 将宿主机文件拷贝到容器里
kubectl cp 指定宿主机路径 pod名称:文件路径
2.3 连接到某个容器
kubectl exec -it pod名称 -- sh## 不指定默认连接到第一个镜像
2.4 连接到指定容器
kubectl exec -it pod名称 -c 指定容器名 -- sh
kubectl exec -it nginx-tomcat -c tomcat -- sh ##连接到tomcat容器
3. 集群使用宿主机网络(hostNetwork)
## 编写资源清单
cat 03-nginx-alpine.yaml
apiVersion: v1
kind: Pod
metadata:name: nginx-linux-004
spec:## 使用宿主机网络hostNetwork: truecontainers:- name: nginximage: nginx:1.23.4-alpine
window访问
4. 调度到指定节点(nodeName)
## 编写资源清单
apiVersion: v1
kind: Pod
metadata:name: game-004
spec:## 使用宿主机网络hostNetwork: true## 调度到指定节点nodeName: k8s233.oldboyedu.com containers:- name: game image: harbor.oldboyedu.com/oldboyedu-games/jasonyin2020/oldboyedu-games:v0.5
5. 查看pod指定容器20分钟内的日志
kubectl logs -c nginx -f nginx-tomcat --since=20m --timestamps
6. 镜像的下载策略
## 编写资源清单
apiVersion: v1
kind: Pod
metadata:name: nginx-web-imagepullpolicy-003
spec:nodeName: k8s233.oldboyedu.comcontainers:- name: nginximage: harbor.oldboyedu.com/web/linux85-web:v1 ## 指定镜像的下载策略 有效值值为:Always,Never,IfNotPresent## Always: 默认值,表示始终拉取最新镜像## IfNotPresent: 如果本地有镜像,则不去远程仓库拉取,如果本地没有,才会去远程仓库拉取## Nerver: 如果本地有镜像则尝试启动,如果本地没有镜像,也不会去远程仓库拉取镜像#imagePullPolicy: Always#imagePullPolicy: IfNotPresent#imagePullPolicy: Never