找回密码
 立即注册
首页 业界区 业界 K8s新手系列之K8s中的资源

K8s新手系列之K8s中的资源

汪玉珂 前天 22:14
K8s中资源的概念

在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。
kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中运行一个个的容器,并将指定的程序跑在容器中。kubernetes的最小管理单元是pod而不是容器,所以只能将容器放在Pod中,而kubernetes一般也不会直接管理Pod,而是通过Pod控制器来管理Pod的。Pod可以提供服务之后,就要考虑如何访问Pod中服务,kubernetes提供了Service资源实现这个功能。当然,如果Pod中程序的数据需要持久化,kubernetes还提供了各种存储系统。
简单点说,k8s中一切皆是资源
K8s中的内置资源

查看K8s中所有的内置资源

通过kubectl api-resources命令可以查看K8s中所有的内置资源。
  1. [root@master01 ~/pod]# kubectl api-resources
  2. NAME                              SHORTNAMES                                      APIVERSION                             NAMESPACED   KIND
  3. bindings                                                                          v1                                     true         Binding
  4. componentstatuses                 cs                                              v1                                     false        ComponentStatus
  5. configmaps                        cm                                              v1                                     true         ConfigMap
  6. endpoints                         ep                                              v1                                     true         Endpoints
  7. events                            ev                                              v1                                     true         Event
  8. limitranges                       limits                                          v1                                     true         LimitRange
  9. namespaces                        ns                                              v1                                     false        Namespace
  10. nodes                             no                                              v1                                     false        Node
  11. persistentvolumeclaims            pvc                                             v1                                     true         PersistentVolumeClaim
  12. persistentvolumes                 pv                                              v1                                     false        PersistentVolume
  13. pods                              po                                              v1                                     true         Pod
  14. podtemplates                                                                      v1                                     true         PodTemplate
  15. replicationcontrollers            rc                                              v1                                     true         ReplicationController
  16. resourcequotas                    quota                                           v1                                     true         ResourceQuota
  17. secrets                                                                           v1                                     true         Secret
  18. serviceaccounts                   sa                                              v1                                     true         ServiceAccount
  19. services                          svc                                             v1                                     true         Service
  20. mutatingwebhookconfigurations                                                     admissionregistration.k8s.io/v1        false        MutatingWebhookConfiguration
  21. validatingwebhookconfigurations                                                   admissionregistration.k8s.io/v1        false        ValidatingWebhookConfiguration
  22. customresourcedefinitions         crd,crds                                        apiextensions.k8s.io/v1                false        CustomResourceDefinition
  23. apiservices                                                                       apiregistration.k8s.io/v1              false        APIService
  24. controllerrevisions                                                               apps/v1                                true         ControllerRevision
  25. daemonsets                        ds                                              apps/v1                                true         DaemonSet
  26. deployments                       deploy                                          apps/v1                                true         Deployment
  27. replicasets                       rs                                              apps/v1                                true         ReplicaSet
  28. statefulsets                      sts                                             apps/v1                                true         StatefulSet
  29. tokenreviews                                                                      authentication.k8s.io/v1               false        TokenReview
  30. localsubjectaccessreviews                                                         authorization.k8s.io/v1                true         LocalSubjectAccessReview
  31. selfsubjectaccessreviews                                                          authorization.k8s.io/v1                false        SelfSubjectAccessReview
  32. selfsubjectrulesreviews                                                           authorization.k8s.io/v1                false        SelfSubjectRulesReview
  33. subjectaccessreviews                                                              authorization.k8s.io/v1                false        SubjectAccessReview
  34. horizontalpodautoscalers          hpa                                             autoscaling/v2                         true         HorizontalPodAutoscaler
  35. cronjobs                          cj                                              batch/v1                               true         CronJob
  36. jobs                                                                              batch/v1                               true         Job
  37. certificatesigningrequests        csr                                             certificates.k8s.io/v1                 false        CertificateSigningRequest
  38. leases                                                                            coordination.k8s.io/v1                 true         Lease
  39. bgpconfigurations                                                                 crd.projectcalico.org/v1               false        BGPConfiguration
  40. bgpfilters                                                                        crd.projectcalico.org/v1               false        BGPFilter
  41. bgppeers                                                                          crd.projectcalico.org/v1               false        BGPPeer
  42. blockaffinities                                                                   crd.projectcalico.org/v1               false        BlockAffinity
  43. caliconodestatuses                                                                crd.projectcalico.org/v1               false        CalicoNodeStatus
  44. clusterinformations                                                               crd.projectcalico.org/v1               false        ClusterInformation
  45. felixconfigurations                                                               crd.projectcalico.org/v1               false        FelixConfiguration
  46. globalnetworkpolicies                                                             crd.projectcalico.org/v1               false        GlobalNetworkPolicy
  47. globalnetworksets                                                                 crd.projectcalico.org/v1               false        GlobalNetworkSet
  48. hostendpoints                                                                     crd.projectcalico.org/v1               false        HostEndpoint
  49. ipamblocks                                                                        crd.projectcalico.org/v1               false        IPAMBlock
  50. ipamconfigs                                                                       crd.projectcalico.org/v1               false        IPAMConfig
  51. ipamhandles                                                                       crd.projectcalico.org/v1               false        IPAMHandle
  52. ippools                                                                           crd.projectcalico.org/v1               false        IPPool
  53. ipreservations                                                                    crd.projectcalico.org/v1               false        IPReservation
  54. kubecontrollersconfigurations                                                     crd.projectcalico.org/v1               false        KubeControllersConfiguration
  55. networkpolicies                                                                   crd.projectcalico.org/v1               true         NetworkPolicy
  56. networksets                                                                       crd.projectcalico.org/v1               true         NetworkSet
  57. endpointslices                                                                    discovery.k8s.io/v1                    true         EndpointSlice
  58. events                            ev                                              events.k8s.io/v1                       true         Event
  59. flowschemas                                                                       flowcontrol.apiserver.k8s.io/v1beta3   false        FlowSchema
  60. prioritylevelconfigurations                                                       flowcontrol.apiserver.k8s.io/v1beta3   false        PriorityLevelConfiguration
  61. ingressclasses                                                                    networking.k8s.io/v1                   false        IngressClass
  62. ingresses                         ing                                             networking.k8s.io/v1                   true         Ingress
  63. networkpolicies                   netpol                                          networking.k8s.io/v1                   true         NetworkPolicy
  64. runtimeclasses                                                                    node.k8s.io/v1                         false        RuntimeClass
  65. apiservers                                                                        operator.tigera.io/v1                  false        APIServer
  66. imagesets                                                                         operator.tigera.io/v1                  false        ImageSet
  67. installations                                                                     operator.tigera.io/v1                  false        Installation
  68. tigerastatuses                                                                    operator.tigera.io/v1                  false        TigeraStatus
  69. poddisruptionbudgets              pdb                                             policy/v1                              true         PodDisruptionBudget
  70. bgpconfigurations                 bgpconfig,bgpconfigs                            projectcalico.org/v3                   false        BGPConfiguration
  71. bgpfilters                                                                        projectcalico.org/v3                   false        BGPFilter
  72. bgppeers                                                                          projectcalico.org/v3                   false        BGPPeer
  73. blockaffinities                   blockaffinity,affinity,affinities               projectcalico.org/v3                   false        BlockAffinity
  74. caliconodestatuses                caliconodestatus                                projectcalico.org/v3                   false        CalicoNodeStatus
  75. clusterinformations               clusterinfo                                     projectcalico.org/v3                   false        ClusterInformation
  76. felixconfigurations               felixconfig,felixconfigs                        projectcalico.org/v3                   false        FelixConfiguration
  77. globalnetworkpolicies             gnp,cgnp,calicoglobalnetworkpolicies            projectcalico.org/v3                   false        GlobalNetworkPolicy
  78. globalnetworksets                                                                 projectcalico.org/v3                   false        GlobalNetworkSet
  79. hostendpoints                     hep,heps                                        projectcalico.org/v3                   false        HostEndpoint
  80. ipamconfigurations                ipamconfig                                      projectcalico.org/v3                   false        IPAMConfiguration
  81. ippools                                                                           projectcalico.org/v3                   false        IPPool
  82. ipreservations                                                                    projectcalico.org/v3                   false        IPReservation
  83. kubecontrollersconfigurations                                                     projectcalico.org/v3                   false        KubeControllersConfiguration
  84. networkpolicies                   cnp,caliconetworkpolicy,caliconetworkpolicies   projectcalico.org/v3                   true         NetworkPolicy
  85. networksets                       netsets                                         projectcalico.org/v3                   true         NetworkSet
  86. profiles                                                                          projectcalico.org/v3                   false        Profile
  87. clusterrolebindings                                                               rbac.authorization.k8s.io/v1           false        ClusterRoleBinding
  88. clusterroles                                                                      rbac.authorization.k8s.io/v1           false        ClusterRole
  89. rolebindings                                                                      rbac.authorization.k8s.io/v1           true         RoleBinding
  90. roles                                                                             rbac.authorization.k8s.io/v1           true         Role
  91. priorityclasses                   pc                                              scheduling.k8s.io/v1                   false        PriorityClass
  92. csidrivers                                                                        storage.k8s.io/v1                      false        CSIDriver
  93. csinodes                                                                          storage.k8s.io/v1                      false        CSINode
  94. csistoragecapacities                                                              storage.k8s.io/v1                      true         CSIStorageCapacity
  95. storageclasses                    sc                                              storage.k8s.io/v1                      false        StorageClass
  96. volumeattachments                                                                 storage.k8s.io/v1                      false        VolumeAttachment
复制代码
各列字段详解:


  • NAME:表示资源的名称
  • SHORTNAMES:表示资源的简称,例如Pod可以简写为po
  1. [root@master01 ~/pod]# kubectl get Pod
  2. NAME        READY   STATUS    RESTARTS   AGE
  3. nginx-pod   1/1     Running   0          30m
  4. [root@master01 ~/pod]# kubectl get po
  5. NAME        READY   STATUS    RESTARTS   AGE
  6. nginx-pod   1/1     Running   0          30m
复制代码

  • APIVERSION:资源所属的API组及版本,对应Manifests文件中apiVersion字段
  • NAMESPACED:表示是否受namespace(命名空间)的隔离,true代表受隔离。false代表不受隔离
  • KIND:表示资源类型(如 Pod、Deployment)。对应Manifests文件中Kind字段
内置资源的分类

工作负载(Workloads)相关


  • Pod:最小的部署单元,包含一个或多个容器。
  • Deployment:管理无状态应用的副本和滚动更新。
  • StatefulSet:适用于有状态应用(如数据库),保障有序性和持久存储。
  • DaemonSet:确保每个节点运行一个Pod(如日志采集器)。
  • Job/CronJob:执行一次性或定时任务。
网络(Networking)相关


  • Service:为 Pod 提供稳定的网络端点(负载均衡)。
  • Ingress:管理外部 HTTP/HTTPS 流量路由。
  • NetworkPolicy:定义 Pod 间的网络访问规则。
存储(Storage)相关


  • PersistentVolume (PV):集群级别的存储资源(如云磁盘)。
  • PersistentVolumeClaim (PVC):用户对存储的请求(绑定PV)。
  • StorageClass:动态按需创建存储(如定义SSD类型)。
配置与安全(Configuration & Security)相关


  • ConfigMap:存储非敏感配置(如环境变量)。
  • Secret:管理敏感信息(密码、密钥)。
  • ServiceAccount:为 Pod 分配身份和权限。
集群管理(Cluster Management)相关


  • Node:表示集群中的工作节点。
  • Namespace:逻辑隔离资源(如 dev/prod 环境)。
  • ResourceQuota:限制命名空间的资源使用量。
查看指定的内置资源

查看master组件状态
  1. [root@master01 ~]# kubectl get componentstatuses
  2. Warning: v1 ComponentStatus is deprecated in v1.19+
  3. NAME                 STATUS    MESSAGE   ERROR
  4. controller-manager   Healthy   ok
  5. scheduler            Healthy   ok
  6. etcd-0               Healthy
  7. # 使用简写方式
  8. [root@master01 ~]# kubectl get cs
  9. Warning: v1 ComponentStatus is deprecated in v1.19+
  10. NAME                 STATUS    MESSAGE   ERROR
  11. controller-manager   Healthy   ok
  12. scheduler            Healthy   ok
  13. etcd-0               Healthy
复制代码
查看集群节点状态
  1. [root@master01 ~]# kubectl get nodes
  2. NAME       STATUS   ROLES           AGE     VERSION
  3. master01   Ready    control-plane   7h24m   v1.26.15
  4. node01     Ready    <none>          7h23m   v1.26.15
  5. node02     Ready    <none>          7h23m   v1.26.15
  6. # 使用简写方式
  7. [root@master01 ~]# kubectl get no
  8. NAME       STATUS   ROLES           AGE     VERSION
  9. master01   Ready    control-plane   7h24m   v1.26.15
  10. node01     Ready    <none>          7h23m   v1.26.15
  11. node02     Ready    <none>          7h23m   v1.26.15
复制代码
查看pod状态
  1. [root@master01 ~]# kubectl get pod
  2. NAME        READY   STATUS    RESTARTS   AGE
  3. nginx-pod   1/1     Running   0          54m
  4. # 使用简写方式
  5. [root@master01 ~]# kubectl get po
  6. NAME        READY   STATUS    RESTARTS   AGE
  7. nginx-pod   1/1     Running   0          54m
复制代码
一次查看多个资源
  1. # 查看master组件状态、集群状态、pod状态
  2. [root@master01 ~]# kubectl get cs,no,po
  3. Warning: v1 ComponentStatus is deprecated in v1.19+
  4. NAME                                 STATUS    MESSAGE   ERROR
  5. componentstatus/controller-manager   Healthy   ok
  6. componentstatus/scheduler            Healthy   ok
  7. componentstatus/etcd-0               Healthy
  8. NAME            STATUS   ROLES           AGE     VERSION
  9. node/master01   Ready    control-plane   7h25m   v1.26.15
  10. node/node01     Ready    <none>          7h25m   v1.26.15
  11. node/node02     Ready    <none>          7h25m   v1.26.15
  12. NAME            READY   STATUS    RESTARTS   AGE
  13. pod/nginx-pod   1/1     Running   0          55m
复制代码
查看K8s集群中资源的文档

可以通过kubectl explain 来进行查看
例如:
  1. kubectl explain po
复制代码
1.png
  1. kubectl explain po.kind
复制代码
2.png

K8s中资源管理方式

K8s中资源管理方式常用的主要有以下两种方式:

  • 声明式管理:用户通过定义 Manifests 文件 描述资源的期望状态,K8s 自动协调实际状态与目标一致
  • 命令式管理:直接通过 kubectl 命令快速操作资源,适合临时调试或简单场景。
声明式管理

用户通过定义 Manifests 文件 描述资源的期望状态,K8s 自动协调实际状态与目标一致。适合生产环境使用。
创建/更新资源
  1. # 应用 Manifest 文件(创建或更新资源)
  2. kubectl apply -f manifests.yaml
  3. # 应用目录下所有 Manifest 文件
  4. kubectl apply -f manifests/
复制代码
删除资源
  1. kubectl delete -f manifests.yaml
复制代码
查看生成的资源配置
  1. # 查看实际生效的配置(含集群填充的默认值)
  2. kubectl get pod nginx-pod -o yaml
复制代码
命令式管理

直接通过 kubectl 命令快速操作资源,适合临时调试或简单场景。
通过命令式创建资源

语法:
  1. kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json]
  2. [--command] -- [COMMAND] [args...] [options]
复制代码
案例:
  1.   # 启动一个nginx的pod
  2.   kubectl run nginx --image=nginx
  3.   # 启动一个hazelcast/hazelcast的pod,指定暴漏的端口为5701
  4.   kubectl run hazelcast --image=hazelcast/hazelcast --port=5701
  5.   # 启动一个hazelcast/hazelcast的pod,指定环境变量
  6.   kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
  7.   # 启动一个hazelcast/hazelcast的pod,指定标签
  8.   kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"
  9.   # 模拟创建一个nginx的pod,生成对应的manifests文件,而不会实际创建资源
  10.   kubectl run nginx --image=nginx --dry-run=client
  11.   # 创建一个busybox的pod,指定重启方式为永不重启
  12.   kubectl run -i -t busybox --image=busybox --restart=Never
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册