一、资源清单的组成

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:  v1

RESOURCE: metadata <Object>

......

字段写法释义:

<Object>  #不能在后面写数据内容,在下级字段写。。。

<string>    #可以在后面写字符串;

<[]Object> #(数组对象)后面不能写东西,需要在下级此段写东西,下面的第一个字段需要加“-”

<boolean> #后面只能加true、false

<integer>   #对应的是整型,一个整数;

<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  资源类型  资源名  

#3,找到问题所在Events字段下的创建过程信息;

#4,根据问题所在的原因,去解决问题;

当然,如果找不到原因,或者其他位置原因,可以先检查集群的节点状态;

[root@k8s231 pod]# kubectl get nodes 
NAME     STATUS   ROLES                  AGE     VERSION
k8s231   Ready    control-plane,master   3d16h   v1.23.17
k8s232   Ready    <none>                 3d15h   v1.23.17
k8s233   Ready    <none>                 3d15h   v1.23.17

六、总结

        日(特指天的意思)后,你会对【资源】有更深入地了解,此篇笔记,只为简单介绍关于k8s的资源相关入门;

· 资源清单的组成

        1,api-version

        2,kind

        3,metadata

        4,spec

· 资源管理命令

        1,创建/修改:kubectl  apply -f  资源清单

                                 kubectl  create -f 资源清单

        2,查看:kubectl  get  pods 

                        kubectl  get  pods  -o  wide

                        kubectl  describe  资源类型  资源名称

         3,删除:kubectl  delete  资源类型  资源名称

· 查看字段写法:explain 

kubectl  explain  资源名.一级字段.二级字段.三级字段..................

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐