一、资源清单的组成
apiVersion:v1 #对应不同的k8s版本中的api;
kind:Pod #资源的名称(service、ConfigMap、hpa…)
metadata: #声明资源的元数据信息(资源的名称)
spec: #使用者期望的运行状态;
##################################################
隐藏组成部分(了解),【status】 :#资源的实际运行状态,由k8s自动维护的;
二、创建一个简单的资源
1,创建一个工作目录
[root@k8s231 ~]# mkdir /xinjizhiwa/pod -pv
[root@k8s231 ~]# cd /xinjizhiwa/pod
2,编辑清单(yaml文件)
[root@k8s231 pod]# vim 01-pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: m-nginx
spec:#声明拉取的容器
containers:#容器名
- name: c-nginx#选择的镜像
image: nginxL1.20.1-alpine
3,创建资源
[root@k8s231 pod]# kubectl apply -f 01-pod-nginx.yaml
pod/m-nginx created
三、资源的管理命令
1,创建/修改资源
#创建、修改都用它;
kubectl apply -f 01-pod-nginx.yaml
kubectl create -f 01-pod-nginx.yaml #几乎不用;
2,查看资源
[root@k8s231 pod]# kubectl get pods
NAME READY STATUS RESTARTS AGE
m-nginx 0/1 InvalidImageName 0 3m28s
这里发现状态不是running;
#查看pod的详细信息;
[root@k8s231 pod]# kubectl describe pods m-nginx
如果我想知道,pod运行在哪个节点怎么办?
[root@k8s231 pod]# kubectl get pods -o wide
3,删除资源
[root@k8s231 pod]# kubectl delete pods m-nginx
#所有的资源名称,支持简写
[root@k8s231 pod]# kubectl delete po m-nginx
pod “m-nginx” deleted
四、资源清单字段写法查询-explain
[root@k8s231 ~]# kubectl explain pods.metadata
KIND: Pod
VERSION: v1RESOURCE: metadata
…
字段写法释义:
#不能在后面写数据内容,在下级字段写。。。
#可以在后面写字符串;
<[]Object> #(数组对象)后面不能写东西,需要在下级此段写东西,下面的第一个字段需要加“-”
#后面只能加true、false
#对应的是整型,一个整数;
<map[string]string> #go语言的map类型,自定义的键值对(key是字符串,value也是字符串)
五、故障排查初体验describe
1,模拟创建pod错误
[root@k8s231 pod]# vim 02-pod-nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: m-nginx-02
spec:
containers:
- name: c-nginx-02
#故意写错镜像的标签名;
image: nginxx:1.20.1-alpine
创建pod
[root@k8s231 pod]# kubectl apply -f 02-pod-nginx.yaml
pod/m-nginx-02 created
查看pod,发现错误,镜像状态不是running。
[root@k8s231 pod]# kubectl get pods -o wide
2,查看pod的详细信息describe
[root@k8s231 pod]# kubectl describe pods m-nginx-02
根据events信息,可以知道是拉取镜像,没有成功;
发现是资源清单中的image对应的标签写错了;
修改yaml资源清单,重新创建pod;
3,总结排错过程
#1,发现错误报错
kubectl get 资源类型 资源名 # 发现不是running;
#2,查看资源的详细信息
kubectl describe 资源类型 资源名