写点什么

K8s 新手系列之 K8s 中的资源

  • 2025-04-28
    福建
  • 本文字数:10048 字

    阅读完需:约 33 分钟

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 中所有的内置资源。


[root@master01 ~/pod]# kubectl api-resourcesNAME                              SHORTNAMES                                      APIVERSION                             NAMESPACED   KINDbindings                                                                          v1                                     true         Bindingcomponentstatuses                 cs                                              v1                                     false        ComponentStatusconfigmaps                        cm                                              v1                                     true         ConfigMapendpoints                         ep                                              v1                                     true         Endpointsevents                            ev                                              v1                                     true         Eventlimitranges                       limits                                          v1                                     true         LimitRangenamespaces                        ns                                              v1                                     false        Namespacenodes                             no                                              v1                                     false        Nodepersistentvolumeclaims            pvc                                             v1                                     true         PersistentVolumeClaimpersistentvolumes                 pv                                              v1                                     false        PersistentVolumepods                              po                                              v1                                     true         Podpodtemplates                                                                      v1                                     true         PodTemplatereplicationcontrollers            rc                                              v1                                     true         ReplicationControllerresourcequotas                    quota                                           v1                                     true         ResourceQuotasecrets                                                                           v1                                     true         Secretserviceaccounts                   sa                                              v1                                     true         ServiceAccountservices                          svc                                             v1                                     true         Servicemutatingwebhookconfigurations                                                     admissionregistration.k8s.io/v1        false        MutatingWebhookConfigurationvalidatingwebhookconfigurations                                                   admissionregistration.k8s.io/v1        false        ValidatingWebhookConfigurationcustomresourcedefinitions         crd,crds                                        apiextensions.k8s.io/v1                false        CustomResourceDefinitionapiservices                                                                       apiregistration.k8s.io/v1              false        APIServicecontrollerrevisions                                                               apps/v1                                true         ControllerRevisiondaemonsets                        ds                                              apps/v1                                true         DaemonSetdeployments                       deploy                                          apps/v1                                true         Deploymentreplicasets                       rs                                              apps/v1                                true         ReplicaSetstatefulsets                      sts                                             apps/v1                                true         StatefulSettokenreviews                                                                      authentication.k8s.io/v1               false        TokenReviewlocalsubjectaccessreviews                                                         authorization.k8s.io/v1                true         LocalSubjectAccessReviewselfsubjectaccessreviews                                                          authorization.k8s.io/v1                false        SelfSubjectAccessReviewselfsubjectrulesreviews                                                           authorization.k8s.io/v1                false        SelfSubjectRulesReviewsubjectaccessreviews                                                              authorization.k8s.io/v1                false        SubjectAccessReviewhorizontalpodautoscalers          hpa                                             autoscaling/v2                         true         HorizontalPodAutoscalercronjobs                          cj                                              batch/v1                               true         CronJobjobs                                                                              batch/v1                               true         Jobcertificatesigningrequests        csr                                             certificates.k8s.io/v1                 false        CertificateSigningRequestleases                                                                            coordination.k8s.io/v1                 true         Leasebgpconfigurations                                                                 crd.projectcalico.org/v1               false        BGPConfigurationbgpfilters                                                                        crd.projectcalico.org/v1               false        BGPFilterbgppeers                                                                          crd.projectcalico.org/v1               false        BGPPeerblockaffinities                                                                   crd.projectcalico.org/v1               false        BlockAffinitycaliconodestatuses                                                                crd.projectcalico.org/v1               false        CalicoNodeStatusclusterinformations                                                               crd.projectcalico.org/v1               false        ClusterInformationfelixconfigurations                                                               crd.projectcalico.org/v1               false        FelixConfigurationglobalnetworkpolicies                                                             crd.projectcalico.org/v1               false        GlobalNetworkPolicyglobalnetworksets                                                                 crd.projectcalico.org/v1               false        GlobalNetworkSethostendpoints                                                                     crd.projectcalico.org/v1               false        HostEndpointipamblocks                                                                        crd.projectcalico.org/v1               false        IPAMBlockipamconfigs                                                                       crd.projectcalico.org/v1               false        IPAMConfigipamhandles                                                                       crd.projectcalico.org/v1               false        IPAMHandleippools                                                                           crd.projectcalico.org/v1               false        IPPoolipreservations                                                                    crd.projectcalico.org/v1               false        IPReservationkubecontrollersconfigurations                                                     crd.projectcalico.org/v1               false        KubeControllersConfigurationnetworkpolicies                                                                   crd.projectcalico.org/v1               true         NetworkPolicynetworksets                                                                       crd.projectcalico.org/v1               true         NetworkSetendpointslices                                                                    discovery.k8s.io/v1                    true         EndpointSliceevents                            ev                                              events.k8s.io/v1                       true         Eventflowschemas                                                                       flowcontrol.apiserver.k8s.io/v1beta3   false        FlowSchemaprioritylevelconfigurations                                                       flowcontrol.apiserver.k8s.io/v1beta3   false        PriorityLevelConfigurationingressclasses                                                                    networking.k8s.io/v1                   false        IngressClassingresses                         ing                                             networking.k8s.io/v1                   true         Ingressnetworkpolicies                   netpol                                          networking.k8s.io/v1                   true         NetworkPolicyruntimeclasses                                                                    node.k8s.io/v1                         false        RuntimeClassapiservers                                                                        operator.tigera.io/v1                  false        APIServerimagesets                                                                         operator.tigera.io/v1                  false        ImageSetinstallations                                                                     operator.tigera.io/v1                  false        Installationtigerastatuses                                                                    operator.tigera.io/v1                  false        TigeraStatuspoddisruptionbudgets              pdb                                             policy/v1                              true         PodDisruptionBudgetbgpconfigurations                 bgpconfig,bgpconfigs                            projectcalico.org/v3                   false        BGPConfigurationbgpfilters                                                                        projectcalico.org/v3                   false        BGPFilterbgppeers                                                                          projectcalico.org/v3                   false        BGPPeerblockaffinities                   blockaffinity,affinity,affinities               projectcalico.org/v3                   false        BlockAffinitycaliconodestatuses                caliconodestatus                                projectcalico.org/v3                   false        CalicoNodeStatusclusterinformations               clusterinfo                                     projectcalico.org/v3                   false        ClusterInformationfelixconfigurations               felixconfig,felixconfigs                        projectcalico.org/v3                   false        FelixConfigurationglobalnetworkpolicies             gnp,cgnp,calicoglobalnetworkpolicies            projectcalico.org/v3                   false        GlobalNetworkPolicyglobalnetworksets                                                                 projectcalico.org/v3                   false        GlobalNetworkSethostendpoints                     hep,heps                                        projectcalico.org/v3                   false        HostEndpointipamconfigurations                ipamconfig                                      projectcalico.org/v3                   false        IPAMConfigurationippools                                                                           projectcalico.org/v3                   false        IPPoolipreservations                                                                    projectcalico.org/v3                   false        IPReservationkubecontrollersconfigurations                                                     projectcalico.org/v3                   false        KubeControllersConfigurationnetworkpolicies                   cnp,caliconetworkpolicy,caliconetworkpolicies   projectcalico.org/v3                   true         NetworkPolicynetworksets                       netsets                                         projectcalico.org/v3                   true         NetworkSetprofiles                                                                          projectcalico.org/v3                   false        Profileclusterrolebindings                                                               rbac.authorization.k8s.io/v1           false        ClusterRoleBindingclusterroles                                                                      rbac.authorization.k8s.io/v1           false        ClusterRolerolebindings                                                                      rbac.authorization.k8s.io/v1           true         RoleBindingroles                                                                             rbac.authorization.k8s.io/v1           true         Rolepriorityclasses                   pc                                              scheduling.k8s.io/v1                   false        PriorityClasscsidrivers                                                                        storage.k8s.io/v1                      false        CSIDrivercsinodes                                                                          storage.k8s.io/v1                      false        CSINodecsistoragecapacities                                                              storage.k8s.io/v1                      true         CSIStorageCapacitystorageclasses                    sc                                              storage.k8s.io/v1                      false        StorageClassvolumeattachments                                                                 storage.k8s.io/v1                      false        VolumeAttachment
复制代码


各列字段详解:


  • NAME:表示资源的名称

  • SHORTNAMES:表示资源的简称,例如 Pod 可以简写为 po


[root@master01 ~/pod]# kubectl get PodNAME        READY   STATUS    RESTARTS   AGEnginx-pod   1/1     Running   0          30m[root@master01 ~/pod]# kubectl get poNAME        READY   STATUS    RESTARTS   AGEnginx-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 组件状态


[root@master01 ~]# kubectl get componentstatusesWarning: v1 ComponentStatus is deprecated in v1.19+NAME                 STATUS    MESSAGE   ERRORcontroller-manager   Healthy   okscheduler            Healthy   oketcd-0               Healthy# 使用简写方式[root@master01 ~]# kubectl get csWarning: v1 ComponentStatus is deprecated in v1.19+NAME                 STATUS    MESSAGE   ERRORcontroller-manager   Healthy   okscheduler            Healthy   oketcd-0               Healthy
复制代码


查看集群节点状态


[root@master01 ~]# kubectl get nodesNAME       STATUS   ROLES           AGE     VERSIONmaster01   Ready    control-plane   7h24m   v1.26.15node01     Ready    <none>          7h23m   v1.26.15node02     Ready    <none>          7h23m   v1.26.15# 使用简写方式[root@master01 ~]# kubectl get noNAME       STATUS   ROLES           AGE     VERSIONmaster01   Ready    control-plane   7h24m   v1.26.15node01     Ready    <none>          7h23m   v1.26.15node02     Ready    <none>          7h23m   v1.26.15
复制代码


查看 pod 状态


[root@master01 ~]# kubectl get podNAME        READY   STATUS    RESTARTS   AGEnginx-pod   1/1     Running   0          54m# 使用简写方式[root@master01 ~]# kubectl get poNAME        READY   STATUS    RESTARTS   AGEnginx-pod   1/1     Running   0          54m
复制代码


一次查看多个资源


# 查看master组件状态、集群状态、pod状态[root@master01 ~]# kubectl get cs,no,poWarning: v1 ComponentStatus is deprecated in v1.19+NAME                                 STATUS    MESSAGE   ERRORcomponentstatus/controller-manager   Healthy   okcomponentstatus/scheduler            Healthy   okcomponentstatus/etcd-0               Healthy NAME            STATUS   ROLES           AGE     VERSIONnode/master01   Ready    control-plane   7h25m   v1.26.15node/node01     Ready    <none>          7h25m   v1.26.15node/node02     Ready    <none>          7h25m   v1.26.15 NAME            READY   STATUS    RESTARTS   AGEpod/nginx-pod   1/1     Running   0          55m
复制代码


查看 K8s 集群中资源的文档


可以通过kubectl explain <资源的类型.属性>来进行查看例如:


kubectl explain po
复制代码



kubectl explain po.kind
复制代码



K8s 中资源管理方式


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

  • 声明式管理:用户通过定义 Manifests 文件 描述资源的期望状态,K8s 自动协调实际状态与目标一致

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


声明式管理


用户通过定义 Manifests 文件 描述资源的期望状态,K8s 自动协调实际状态与目标一致。适合生产环境使用。


创建/更新资源


# 应用 Manifest 文件(创建或更新资源)kubectl apply -f manifests.yaml # 应用目录下所有 Manifest 文件kubectl apply -f manifests/
复制代码


删除资源


kubectl delete -f manifests.yaml
复制代码


查看生成的资源配置


# 查看实际生效的配置(含集群填充的默认值)kubectl get pod nginx-pod -o yaml
复制代码


命令式管理


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


通过命令式创建资源


语法:


kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json][--command] -- [COMMAND] [args...] [options]
复制代码


案例:


  # 启动一个nginx的pod  kubectl run nginx --image=nginx   # 启动一个hazelcast/hazelcast的pod,指定暴漏的端口为5701  kubectl run hazelcast --image=hazelcast/hazelcast --port=5701   # 启动一个hazelcast/hazelcast的pod,指定环境变量  kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"   # 启动一个hazelcast/hazelcast的pod,指定标签  kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"   # 模拟创建一个nginx的pod,生成对应的manifests文件,而不会实际创建资源  kubectl run nginx --image=nginx --dry-run=client   # 创建一个busybox的pod,指定重启方式为永不重启  kubectl run -i -t busybox --image=busybox --restart=Never
复制代码


文章转载自:huangSir-devops

原文链接:https://www.cnblogs.com/huangSir-devops/p/18848417

体验地址:http://www.jnpfsoft.com/?from=001YH

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
K8s新手系列之K8s中的资源_Kubernetes_不在线第一只蜗牛_InfoQ写作社区