Bootstrap

K8S-Pod资源清单的编写,资源的增删改查,镜像的下载策略

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: nginx
    image: 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: nginx
    image: nginx:1.23.4-alpine
  - name: linux
    image: alpine

2.2 解决办法 

cat 03-nginx-alpine.yaml
apiVersion: v1
kind: Pod
metadata:
  name: nginx-linux-004
spec:
  containers:
  - name: nginx
    image: nginx:1.23.4-alpine
  - name: linux 
    image: alpine
   ## 给容器分配标准输入 默认值位false
   #stdin: true
   ## 给容器分配一个启动命令,修改Dockerfile的CMD指令
   #args: ["tail","-f","/etc/hosts"]
   ## 给容器分配一个启动命令。相当于ENTRYPOINT
    command:
    - "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: true
  containers:
  - name: nginx
    image: 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

​​​​​​​

;