Docker(十七)--Docker k8s--pod管理-资源清单和标签

1. 格式与操作

- 格式如下:
	apiVersion: group/version  //指明api资源属于哪个群组和版本,同一个组可以有多个版本
	        $ kubectl api-versions		//查询命令
	
	kind: 		//标记创建的资源类型,k8s主要支持以下资源类别
	       Pod,ReplicaSet,Deployment,StatefulSet,DaemonSet,Job,Cronjob
	    
	metadata:	//元数据
	        name:	//对像名称
	        namespace:	//对象属于哪个命名空间
	        labels:	//指定资源标签,标签是一种键值数据
	        		
	spec: 		//定义目标资源的期望状态
	
	$ kubectl explain pod		//查询帮助文档

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.1 格式和内容的书写方法

## 方法一:书写时候的查找方法,可以之直接通过explain一步一步查找参数内容用法
[root@server2 ~]# kubectl explain pod      ##查看pod所有参数,-required-带有required是必须存在的参数
[root@server2 ~]# kubectl explain pod.apiVersion   ##查看api对应需要添加的参数

## 方法二: 直接打开一个已经有的deployment,然后生成相应的yaml文件,进行参考
[root@server2 ~]# kubectl get pod 
NAME   READY   STATUS    RESTARTS   AGE
demo   1/1     Running   0          3h51m 
[root@server2 ~]# kubectl get pod demo -o yaml   ##生成一个yaml文件



方法一
在这里插入图片描述

方法二
加粗样式

1.2 示例及执行操作

##如果俩个镜像使用的是同一个端口,只有一个可以成功
[root@server2 ~]# kubectl delete deployments.apps nginx  ##删除原来pod,为了下面进行实验
[root@server2 ~]# vim pod.yml    ##编写yml文件,可用性较高
[root@server2 ~]# cat pod.yml 
apiVersion: apps/v1
kind: Deployment    ##设置为deployment
metadata:
  name: nginx
  namespace: default   ##设置命名空间
spec:
  replicas: 1
  selector:
    matchLabels:
      run: nginx
  template:    ##模板
    metadata:
      labels:   ##标签
        run: nginx
    spec:
      #nodeSelector:        ##指定运行节点的俩种方法(方法一)
      #  kubernetes.io/hostname: server4
      #nodeName: server3    ##指定运行节点的俩种方法(方法二)
      #hostNetwork: true    ##可以通过直接访问节点ip的方式访问,[root@westos Desktop]# curl 172.25.13.4
      containers:
      - name: nginx
        image: myapp:v1
        imagePullPolicy: IfNotPresent
        resources:    ##资源限制
          requests:
            cpu: 100m
            memeory: 100Mi
          limits:
            cpu: 0.5
            memory: 512Mi
        #- name: busyboxplus
        #  image: busyboxplus
        #  imagePullPolicy: IfNotPresent  ##本地有镜像,优先本地拉取,没有就需要联网拉取
        #  stdin: true     ##stdin和tty是为了保证交互式,相当于执行参数-it
        #  tty: true
[root@server2 ~]# kubectl apply -f pod.yml    ##deployment使用apply,会自动更新修改内容
				## $ kubectl create -f demo.yaml  ##不是deployment使用create,不会自动更新修改内容
deployment.apps/nginx created
[root@server2 ~]# kubectl get pod
NAME                   READY   STATUS    RESTARTS   AGE
demo                   1/1     Running   0          4h47m
nginx-79cc587f-fs8l5   1/1     Running   0          2

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2. 标签

- 标签
	- $ kubectl get pod --show-labels		//查看标签
		NAME   READY   STATUS    RESTARTS   AGE   LABELS
		demo   2/2     Running   0          8s    app=demo
	  $ kubectl get pod -l app			//过滤包含app的标签
		NAME   READY   STATUS    RESTARTS   AGE
		demo   2/2     Running   0          34s
	  $ kubectl get pod -L app
		NAME   READY   STATUS    RESTARTS   AGE   APP
		demo   2/2     Running   0          39s   demo
	  $ kubectl label pod demo version=v1	//打标签
		pod/demo labeled
	  $ kubectl get pod --show-labels 
		NAME   READY   STATUS    RESTARTS   AGE    LABELS
		demo   2/2     Running   0          4m1s   app=demo,version=v1
	  $ kubectl label pod demo app=nginx --overwrite		//更改标签 
		pod/demo labeled
	  $ kubectl get pod --show-labels 
		NAME   READY   STATUS    RESTARTS   AGE     LABELS
		demo   2/2     Running   0          5m40s   app=nginx,version=v1

- 节点标签选择器
	- $ kubectl label nodes server2 disktype=ssd
		node/server2 labeled
	- $ kubectl get nodes -l disktype
		NAME      STATUS   ROLES    AGE   VERSION
		server2   Ready    <none>   6d    v1.17.2
	- 在yaml文件中增加标签选择器

## 1.修改节点标签
[root@server2 ~]# kubectl get node --show-labels    ##查看节点标签】
[root@server2 ~]# kubectl label nodes server3 app=nginx  ##打标签
[root@server2 ~]# kubectl get node server3 --show-labels    ##查看节点server3的标签
NAME      STATUS   ROLES    AGE   VERSION   LABELS
server3   Ready    <none>   42h   v1.20.2   app=nginx,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=server3,kubernetes.io/os=linux
[root@server2 ~]# kubectl label nodes server3 app=myapp --overwrite   ##重新覆盖
[root@server2 ~]# kubectl get node server3 --show-labels    ##查看修改内容
NAME      STATUS   ROLES    AGE   VERSION   LABELS
server3   Ready    <none>   42h   v1.20.2   app=myapp,beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=server3,kubernetes.io/os=linux
[root@server2 ~]# kubectl label nodes server3 app-      ##删除标签

## 2. 修改pod标签
[root@server2 ~]# kubectl get pod --show-labels 
NAME                     READY   STATUS    RESTARTS   AGE     LABELS
demo                     1/1     Running   0          5h11m   run=demo
nginx-75d94ffc64-hs8kn   1/1     Running   0          21m     pod-template-hash=75d94ffc64,run=nginx
[root@server2 ~]# kubectl label pod demo run=demo2 --overwrite 
pod/demo labeled
[root@server2 ~]# kubectl get pod --show-labels 
NAME                     READY   STATUS    RESTARTS   AGE     LABELS
demo                     1/1     Running   0          5h12m   run=demo2

##3.查看有相应标签的项
[root@server2 ~]# kubectl get pod -L run

1.修改节点标签
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.修改pod标签
在这里插入图片描述

3.查看有对应标签的项

在这里插入图片描述

3.清理刚才设置的deployment

[root@server2 ~]# kubectl delete -f pod.yml 
deployment.apps "nginx" deleted
[root@server2 ~]# kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
demo   1/1     Running   0          5h16m

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qwerty1372431588/article/details/113917795