K8s-资源清单

资源清单


资源

​ 概念:K8S中所有的内容都抽象为资源,资源实例化之后,叫做对象

Kuberbetes中存在哪些资源

  • 名称空间级别(作用域在名称空间内)
    • 工作负载资源:pod,ReplicaSet,Deployment....
    • 服务发现及负载均衡型资源:Service,Ingress....
    • 配置与存储型资源:Volume,CSI....
    • 特殊类型的存储卷:ConfigMap,Secert....
  • 集群级资源(作用域在集群)
    • Namespace,Node,ClusterRole,ClusterRoleBinding(集群 角色绑定)
  • 元数据型资源(不能独立存在,必须依附在别的容器之上)
    • HPA,PordTemplate,LimitRange

资源清单

在K8S中,一般使用yaml格式的文件来创建符合我们预期望的 pod,这样的yaml文件我们一般称为资源清单

  • 资源清单格式:必须具备一级字段关键字,如下

    • apiVersion: group/apiversion # 如果没有给定 group 名称, 那么默认为 core,可以使用 kubectl api-versions # 获取当前 k8s 版本上所有的 apiVersion 版本信息( 每个版本可能不同 ),即核 心组件版本

    • kind: #资源类别

    • metadata: #资源元数据

      ​ name #myapp,名称

      ​ namespace #名称空间

      ​ lables #标签,复合数据类型,可以有多个

      ​ app:nginx

      ​ version:v1 annotations # 主要目的是方便用户阅读查找

    • spec: # 期望的状态(disired state)

    • status: # 当前状态,本字段有 Kubernetes 自身维护,用户 不能去定义

  • 关键字查看

    • kubectl explain pod

  • 说明
    • 名称空间级别的资源如果在创建时不指定namespace,那默认是 default
    • kubectl get pod -n kube-system #查看名称空间系统级别的pod

​ --配置清单主要有五个一级字段,其中status用户不能定义,
​ 有k8s自身维护--检索的时候通过元数据检索

  • 资源清单的常用命令
# 获取apiversion版本信
$ kubectl api-versions

# 获取资源的apiVersion版本信息
$ kubectl explain pod
$ kubectl explain Ingress
  • 字段配置格式
apiVersion <string> 		#表示字符串类型
metadata <Object> 		#表示需要嵌套多层字段
labels <map[string]string>      #表示由k:v组成的映射
finalizers <[]string> 		#表示字串列表
ownerReferences <[]Object>      #表示对象列表
hostPID <boolean> 		#布尔类型
priority <integer> 		#整型
name <string> -required- 	#如果类型后面接 -required-,表示为必填字段

# 通过自定义清单文件创建pod
$ vim pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-demo
namespace: default
labels:
app: myapp
spec:
containers:
- name: nginx-1
image: chenxiyanglinux/nginx:vq
- name: busybox-1
image: chenxiyanglinux/busybox:v1
command:
- "/bin/sh"
- "-c"
- "sleep 3600"

# 使用kubectl进入容器
$ kubectl exec -it pod-demo -c nginx-1 -- /bin/sh
		   name   -c 指定容器名
# 如果是此项目只有一个容器运行,则不需指定容器

# 实现过程:文件的转换
    yaml > kubectl > json > apiserver

# 查看pod-demo启动的描述信息
$ kubectl describe pod pod-demo

# 查看指定容器的日志信息
$ kubectl logs pod-demo -c nginx-1
$ kubectl logs pod-demo -c busybox-1

# 查看pod的详细描述信息
$ kubectl get pod pod-demo -o yaml   # 以yaml格式输出
$ kubectl get pod pod-demo -o json   # 以json格式输出

# 常用命令总结
$ kubectl get 资源类型 对象名 -o yaml/json
# 可以把已经存在的对象输出为 json 或者 yaml 文件,进行查看或重新定义

# kubectl get 资源类型
-n default 			# 指定名字空间,默认即为 default 空间
-o wide				# 显示详细参数,比如分配的节点以及地址

--all-namespaces:kubectl get pod --all-namespaces	# 显示当前资源在所有名称空间中拥有的对象
-w watch			# 将当前资源的变化内容进行显示
--show-labels		        # 查看当前资源对象的标签
-l key、key=values	        # 根据资源对象的标签 匹配成功后打印匹配结果

# 基于 yaml、json 文件创建资源对象
$kubectl create -f xxx.yaml \ xxx.json
	yaml > kubectl > json > apiserver # 格式的转换

# 查看 kubernetes 官方描述文档
$ kubectl explain pod.spec.containers

# 查看kuberbetes标签类型
$kubectl explain pod.metadata.labels
	k:v映射的类型---字典
# 让 pod 内部对应的 container 执行命令
$ kubectl exec -it podName -c containerName -- command

# 查看资源对象的运行信息,比如事件
$ kubectl describe 资源类型 对象名

# 查看当前 pod 内部的日志信息
$ kubectl logs podName -c containerName

# 删除pod资源类型
$ kubectl delete pod 资源名称

# 删除所有pod资源
$ kubectl delete pod --all

# 删除svc资源类型
$ kubectl delete svc 资源名称

# 注释:pod删除的时候时间比较慢是因为删除是一个同步状态,只有pod不在了,终端才会释放,还有原因是当前pod不具备优雅退出

关键字说明


posted @ 2022-07-21 17:18  Sunset_cloud  阅读(433)  评论(0编辑  收藏  举报