欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > k8s中的资源分类及查看命令

k8s中的资源分类及查看命令

2024/10/25 17:26:15 来源:https://blog.csdn.net/ljj19910401/article/details/141391887  浏览:    关键词:k8s中的资源分类及查看命令

1. 在k8s中的资源分类

工作负载型资源(workload):
Pod、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job、CronJob(ReplicationController在v1.11版本被废弃)

服务发现及负载均衡型资源(ServiceDiscovery LoadBalance):
Service、Ingress、…

配置与存储型资源:
Volume(存储卷)、CSI(容器存储接口,可以扩展各种各样的第三方存储卷)

特殊类型的存储卷:
ConfigMap(当配置中心来使用的资源类型)、Secret(保存敏感数据)、DownwardAPI(把外部环境中的信息输出给容器)
以上这些资源都是配置在名称空间级别

集群级资源:
Namespace、Node、Role、ClusterRole、RoleBinding(角色绑定)、ClusterRoleBinding(集群角色绑定)

元数据型资源:
HPA(Pod水平扩展)、PodTemplate(Pod模板,用于让控制器创建Pod时使用的模板)、LimitRange(用来定义硬件资源限制的)

# 组/版本号[root@master ~]# kubectl api-versions
admissionregistration.k8s.io/v1
apiextensions.k8s.io/v1
apiregistration.k8s.io/v1
apps/v1
authentication.k8s.io/v1
authorization.k8s.io/v1
autoscaling/v1
autoscaling/v2
batch/v1
certificates.k8s.io/v1
coordination.k8s.io/v1
crd.projectcalico.org/v1
discovery.k8s.io/v1
events.k8s.io/v1
flowcontrol.apiserver.k8s.io/v1
flowcontrol.apiserver.k8s.io/v1beta3
networking.k8s.io/v1
node.k8s.io/v1
policy/v1
rbac.authorization.k8s.io/v1
scheduling.k8s.io/v1
storage.k8s.io/v1
v1

1.查看资源

[root@master ~]# kubectl explain pod
KIND:       Pod
VERSION:    v1DESCRIPTION:Pod is a collection of containers that can run on a host. This resource iscreated by clients and scheduled onto hosts.FIELDS:apiVersion    <string>APIVersion defines the versioned schema of this representation of an object.Servers should convert recognized schemas to the latest internal value, andmay reject unrecognized values. More info:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourceskind    <string>Kind is a string value representing the REST resource this objectrepresents. Servers may infer this from the endpoint the client submitsrequests to. Cannot be updated. In CamelCase. More info:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindsmetadata    <ObjectMeta>Standard object's metadata. More info:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadataspec    <PodSpec>Specification of the desired behavior of the pod. More info:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-statusstatus    <PodStatus>Most recently observed status of the pod. This data may not be up to date.Populated by the system. Read-only. More info:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status

2.YAML文件解析

vim nginx-deployment.yamlapiVersion: apps/v1            #指定api版本标签
kind: Deployment            #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
metadata:                #定义资源的元数据信息,比如资源的名称、namespace、标签等信息name: nginx-deployment        #定义资源的名称,在同一个namespace空间中必须是唯一的namespace: default               #默认就是default,可以不用写labels:                    #定义Deployment资源标签app: nginx    
spec:                        #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性replicas: 3                #定义副本数量selector:                    #定义标签选择器matchLabels:            #定义匹配标签app: nginx            #需与 .spec.template.metadata.labels 定义的标签保持一致template:                #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配metadata:labels:                       #定义Pod副本将使用的标签,需与 .spec.selector.matchLabels 定义的标签保持一致app: nginxspec:containers:            #定义容器属性- name: nginx                #定义一个容器名,一个 - name: 定义一个容器image: nginx:1.15.4        #定义容器使用的镜像以及版本ports:- containerPort: 80        #定义容器的对外的端口#创建service服务对外提供访问并测试
vim nginx-service.yamlapiVersion: v1  
kind: Service  
metadata:name: nginx-servicelabels:app: nginx  
spec:type: NodePort  ports:- port: 80targetPort: 80  nodePort: 30080selector:app: nginx

3.测试YAML

Pod-Demo

apiVersion: v1
kind: Pod
metadata:name: pod-demonamespace: defaultlabels:app: myapp
spec:containers:- name: myapp-1image: wangyanglinux/myapp:v1.0- name: busybox-1image: wangyanglinux/tools:busyboxcommand:- "/bin/sh"- "-c"- "sleep 3600"
kubectl create -f 01.pod-demo.yaml[root@master 4]# kubectl get pod -n default
NAME       READY   STATUS              RESTARTS   AGE
pod-demo   0/2     ContainerCreating   0          59s

4.查看pod信息

# 获取当前的资源,pod
$ kubectl get pod -A,--all-namespaces 查看当前所有名称空间的资源-n  指定名称空间,默认值 default,kube-system 空间存放是当前组件资源--show-labels  查看当前的标签-l  筛选资源,key、key=value-o wide  详细信息包括 IP、分配的节点-w  监视,打印当前的资源对象的变化部分# 进入 Pod 内部的容器执行命令
$ kubectl exec -it podName -c cName -- command-c  可以省略,默认进入唯一的容器内部# 查看资源的描述
$ kubectl explain pod.spec# 查看 pod 内部容器的 日志
$ kubectl logs podName -c cName# 查看资源对象的详细描述
$ kubectl describe pod podName# 删除资源对象
$ kubectl delete kindName objName--all 删除当前所有的资源对象

4.1 获取当前的资源,pod

[root@master ~]# kubectl get pod
NAME       READY   STATUS    RESTARTS      AGE
pod-demo   2/2     Running   1 (18m ago)   158m[root@master ~]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS        AGE
default       pod-demo                                   2/2     Running   1 (19m ago)     158m
kube-system   calico-kube-controllers-558d465845-5zr5h   1/1     Running   1 (169m ago)    3h34m
kube-system   calico-node-bpg47                          1/1     Running   14 (169m ago)   15h
kube-system   calico-node-dcqhb                          1/1     Running   4 (165m ago)    15h
kube-system   calico-node-nl2dw                          1/1     Running   3 (164m ago)    15h
kube-system   calico-typha-5b56944f9b-gcvzz              1/1     Running   4 (165m ago)    15h
kube-system   coredns-857d9ff4c9-6cb2b                   1/1     Running   1 (169m ago)    3h34m
kube-system   coredns-857d9ff4c9-tvrff                   1/1     Running   1 (169m ago)    3h34m
kube-system   etcd-master                                1/1     Running   7 (169m ago)    15h
kube-system   kube-apiserver-master                      1/1     Running   7 (169m ago)    15h
kube-system   kube-controller-manager-master             1/1     Running   8 (169m ago)    15h
kube-system   kube-proxy-ddqbc                           1/1     Running   3 (164m ago)    15h
kube-system   kube-proxy-lr5qj                           1/1     Running   7 (169m ago)    15h
kube-system   kube-proxy-p6hlv                           1/1     Running   4 (165m ago)    15h
kube-system   kube-scheduler-master                      1/1     Running   8 (169m ago)    15h[root@master ~]# kubectl get pod -n default
NAME       READY   STATUS    RESTARTS      AGE
pod-demo   2/2     Running   1 (19m ago)   159m[root@master ~]# kubectl get pod --show-labels
NAME       READY   STATUS    RESTARTS      AGE    LABELS
pod-demo   2/2     Running   1 (20m ago)   159m   app=myapp[root@master ~]# kubectl get pod --show-labels -o wide
NAME       READY   STATUS    RESTARTS      AGE    IP             NODE    NOMINATED NODE   READINESS GATES   LABELS
pod-demo   2/2     Running   1 (20m ago)   160m   10.244.104.9   node2   <none>           <none>            app=myapp

4.2 进入 Pod 内部的容器执行命令

[root@master ~]# kubectl exec -it pod-demo -c myapp-1  -- /bin/bash
pod-demo:/# ps a
PID   USER     TIME  COMMAND1 root      0:00 nginx: master process /usr/local/nginx/sbin/nginx8 nginx     0:00 nginx: worker process62 root      0:00 /bin/bash69 root      0:00 ps a

4.3 查看资源的描述

[root@master ~]# kubectl explain pods.spec.containers.name
KIND:       Pod
VERSION:    v1FIELD: name <string>DESCRIPTION:Name of the container specified as a DNS_LABEL. Each container in a pod musthave a unique name (DNS_LABEL). Cannot be updated.

4.4 查看 pod 内部容器的 日志

[root@master ~]# kubectl logs pod-demo -c myapp-1
10.0.17.100 - - [21/Aug/2024:13:12:49 +0800] "GET / HTTP/1.1" 200 48 "-" "curl/7.76.1"
10.0.17.100 - - [21/Aug/2024:13:22:23 +0800] "GET / HTTP/1.1" 200 48 "-" "curl/7.76.1"
10.0.17.100 - - [21/Aug/2024:13:23:15 +0800] "GET / HTTP/1.1" 200 59 "-" "curl/7.76.1"

4.5 查看pod详细描述

[root@master ~]# kubectl describe pod pod-demo
Name:             pod-demo
Namespace:        default
Priority:         0
Service Account:  default
Node:             node2/10.0.17.102
Start Time:       Wed, 21 Aug 2024 11:05:45 +0800
Labels:           app=myapp
Annotations:      cni.projectcalico.org/containerID: a2ba351a800e16ace038139cfb1aa8e560ac9d15634ac70fb9fc7aab9a952682cni.projectcalico.org/podIP: 10.244.104.9/32cni.projectcalico.org/podIPs: 10.244.104.9/32
Status:           Running
IP:               10.244.104.9
IPs:IP:  10.244.104.9
Containers:myapp-1:Container ID:   docker://71dcc16e0e281d48d5fe392d96a90e2914318751515cd47aacdee972ec274940Image:          wangyanglinux/myapp:v1.0Image ID:       docker-pullable://wangyanglinux/myapp@sha256:77d7ec4cd4c00f79304ee9e53ca3d72e0aba22fbaf7a86797528649e3fc66e41Port:           <none>Host Port:      <none>State:          RunningStarted:      Wed, 21 Aug 2024 11:06:01 +0800Ready:          TrueRestart Count:  0Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-gx2qz (ro)busybox-1:Container ID:  docker://7a90d76ed08f0e05334cec13de1dd74e544e233f3b6b1575a5f8d14f5e6104e4Image:         wangyanglinux/tools:busyboxImage ID:      docker-pullable://wangyanglinux/tools@sha256:a024bc31a3a6d57ad06e0a66efa453c8cbdf818ef8d720ff6d4a36027dd1f0aePort:          <none>Host Port:     <none>Command:/bin/sh-csleep 3600State:          RunningStarted:      Wed, 21 Aug 2024 13:25:38 +0800Last State:     TerminatedReason:       CompletedExit Code:    0Started:      Wed, 21 Aug 2024 11:06:11 +0800Finished:     Wed, 21 Aug 2024 13:25:38 +0800Ready:          TrueRestart Count:  1Environment:    <none>Mounts:/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-gx2qz (ro)
Conditions:Type                        StatusPodReadyToStartContainers   True Initialized                 True Ready                       True ContainersReady             True PodScheduled                True 
Volumes:kube-api-access-gx2qz:Type:                    Projected (a volume that contains injected data from multiple sources)TokenExpirationSeconds:  3607ConfigMapName:           kube-root-ca.crtConfigMapOptional:       <nil>DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300snode.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:Type    Reason   Age                 From     Message----    ------   ----                ----     -------Normal  Created  30m (x2 over 170m)  kubelet  Created container busybox-1Normal  Started  30m (x2 over 170m)  kubelet  Started container busybox-1Normal  Pulled   30m                 kubelet  Container image "wangyanglinux/tools:busybox" already present on machine

4.6 删除资源对象

[root@master ~]# kubectl delete pod pod-demo
pod "pod-demo" deleted
[root@master ~]# kubectl delete pod pod-demo
pod "pod-demo" deleted

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com