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-resources NAME SHORTNAMES APIVERSION NAMESPACED KIND bindings v1 true Binding componentstatuses cs v1 false ComponentStatus configmaps cm v1 true ConfigMap endpoints ep v1 true Endpoints events ev v1 true Event limitranges limits v1 true LimitRange namespaces ns v1 false Namespace nodes no v1 false Node persistentvolumeclaims pvc v1 true PersistentVolumeClaim persistentvolumes pv v1 false PersistentVolume pods po v1 true Pod podtemplates v1 true PodTemplate replicationcontrollers rc v1 true ReplicationController resourcequotas quota v1 true ResourceQuota secrets v1 true Secret serviceaccounts sa v1 true ServiceAccount services svc v1 true Service mutatingwebhookconfigurations admissionregistration.k8s.io/v1 false MutatingWebhookConfiguration validatingwebhookconfigurations admissionregistration.k8s.io/v1 false ValidatingWebhookConfiguration customresourcedefinitions crd,crds apiextensions.k8s.io/v1 false CustomResourceDefinition apiservices apiregistration.k8s.io/v1 false APIService controllerrevisions apps/v1 true ControllerRevision daemonsets ds apps/v1 true DaemonSet deployments deploy apps/v1 true Deployment replicasets rs apps/v1 true ReplicaSet statefulsets sts apps/v1 true StatefulSet tokenreviews authentication.k8s.io/v1 false TokenReview localsubjectaccessreviews authorization.k8s.io/v1 true LocalSubjectAccessReview selfsubjectaccessreviews authorization.k8s.io/v1 false SelfSubjectAccessReview selfsubjectrulesreviews authorization.k8s.io/v1 false SelfSubjectRulesReview subjectaccessreviews authorization.k8s.io/v1 false SubjectAccessReview horizontalpodautoscalers hpa autoscaling/v2 true HorizontalPodAutoscaler cronjobs cj batch/v1 true CronJob jobs batch/v1 true Job certificatesigningrequests csr certificates.k8s.io/v1 false CertificateSigningRequest leases coordination.k8s.io/v1 true Lease bgpconfigurations crd.projectcalico.org/v1 false BGPConfiguration bgpfilters crd.projectcalico.org/v1 false BGPFilter bgppeers crd.projectcalico.org/v1 false BGPPeer blockaffinities crd.projectcalico.org/v1 false BlockAffinity caliconodestatuses crd.projectcalico.org/v1 false CalicoNodeStatus clusterinformations crd.projectcalico.org/v1 false ClusterInformation felixconfigurations crd.projectcalico.org/v1 false FelixConfiguration globalnetworkpolicies crd.projectcalico.org/v1 false GlobalNetworkPolicy globalnetworksets crd.projectcalico.org/v1 false GlobalNetworkSet hostendpoints crd.projectcalico.org/v1 false HostEndpoint ipamblocks crd.projectcalico.org/v1 false IPAMBlock ipamconfigs crd.projectcalico.org/v1 false IPAMConfig ipamhandles crd.projectcalico.org/v1 false IPAMHandle ippools crd.projectcalico.org/v1 false IPPool ipreservations crd.projectcalico.org/v1 false IPReservation kubecontrollersconfigurations crd.projectcalico.org/v1 false KubeControllersConfiguration networkpolicies crd.projectcalico.org/v1 true NetworkPolicy networksets crd.projectcalico.org/v1 true NetworkSet endpointslices discovery.k8s.io/v1 true EndpointSlice events ev events.k8s.io/v1 true Event flowschemas flowcontrol.apiserver.k8s.io/v1beta3 false FlowSchema prioritylevelconfigurations flowcontrol.apiserver.k8s.io/v1beta3 false PriorityLevelConfiguration ingressclasses networking.k8s.io/v1 false IngressClass ingresses ing networking.k8s.io/v1 true Ingress networkpolicies netpol networking.k8s.io/v1 true NetworkPolicy runtimeclasses node.k8s.io/v1 false RuntimeClass apiservers operator.tigera.io/v1 false APIServer imagesets operator.tigera.io/v1 false ImageSet installations operator.tigera.io/v1 false Installation tigerastatuses operator.tigera.io/v1 false TigeraStatus poddisruptionbudgets pdb policy/v1 true PodDisruptionBudget bgpconfigurations bgpconfig,bgpconfigs projectcalico.org/v3 false BGPConfiguration bgpfilters projectcalico.org/v3 false BGPFilter bgppeers projectcalico.org/v3 false BGPPeer blockaffinities blockaffinity,affinity,affinities projectcalico.org/v3 false BlockAffinity caliconodestatuses caliconodestatus projectcalico.org/v3 false CalicoNodeStatus clusterinformations clusterinfo projectcalico.org/v3 false ClusterInformation felixconfigurations felixconfig,felixconfigs projectcalico.org/v3 false FelixConfiguration globalnetworkpolicies gnp,cgnp,calicoglobalnetworkpolicies projectcalico.org/v3 false GlobalNetworkPolicy globalnetworksets projectcalico.org/v3 false GlobalNetworkSet hostendpoints hep,heps projectcalico.org/v3 false HostEndpoint ipamconfigurations ipamconfig projectcalico.org/v3 false IPAMConfiguration ippools projectcalico.org/v3 false IPPool ipreservations projectcalico.org/v3 false IPReservation kubecontrollersconfigurations projectcalico.org/v3 false KubeControllersConfiguration networkpolicies cnp,caliconetworkpolicy,caliconetworkpolicies projectcalico.org/v3 true NetworkPolicy networksets netsets projectcalico.org/v3 true NetworkSet profiles projectcalico.org/v3 false Profile clusterrolebindings rbac.authorization.k8s.io/v1 false ClusterRoleBinding clusterroles rbac.authorization.k8s.io/v1 false ClusterRole rolebindings rbac.authorization.k8s.io/v1 true RoleBinding roles rbac.authorization.k8s.io/v1 true Role priorityclasses pc scheduling.k8s.io/v1 false PriorityClass csidrivers storage.k8s.io/v1 false CSIDriver csinodes storage.k8s.io/v1 false CSINode csistoragecapacities storage.k8s.io/v1 true CSIStorageCapacity storageclasses sc storage.k8s.io/v1 false StorageClass volumeattachments storage.k8s.io/v1 false VolumeAttachment
各列字段详解:
- NAME:表示资源的名称
- SHORTNAMES:表示资源的简称,例如Pod可以简写为po
[root@master01 ~/pod]# kubectl get Pod NAME READY STATUS RESTARTS AGE nginx-pod 1/1 Running 0 30m [root@master01 ~/pod]# kubectl get po NAME READY STATUS RESTARTS AGE 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组件状态
[root@master01 ~]# kubectl get componentstatuses Warning: v1 ComponentStatus is deprecated in v1.19+ NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy # 使用简写方式 [root@master01 ~]# kubectl get cs Warning: v1 ComponentStatus is deprecated in v1.19+ NAME STATUS MESSAGE ERROR controller-manager Healthy ok scheduler Healthy ok etcd-0 Healthy
查看集群节点状态
[root@master01 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION master01 Ready control-plane 7h24m v1.26.15 node01 Ready <none> 7h23m v1.26.15 node02 Ready <none> 7h23m v1.26.15 # 使用简写方式 [root@master01 ~]# kubectl get no NAME STATUS ROLES AGE VERSION master01 Ready control-plane 7h24m v1.26.15 node01 Ready <none> 7h23m v1.26.15 node02 Ready <none> 7h23m v1.26.15
查看pod状态
[root@master01 ~]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-pod 1/1 Running 0 54m # 使用简写方式 [root@master01 ~]# kubectl get po NAME READY STATUS RESTARTS AGE nginx-pod 1/1 Running 0 54m
一次查看多个资源
# 查看master组件状态、集群状态、pod状态 [root@master01 ~]# kubectl get cs,no,po Warning: v1 ComponentStatus is deprecated in v1.19+ NAME STATUS MESSAGE ERROR componentstatus/controller-manager Healthy ok componentstatus/scheduler Healthy ok componentstatus/etcd-0 Healthy NAME STATUS ROLES AGE VERSION node/master01 Ready control-plane 7h25m v1.26.15 node/node01 Ready <none> 7h25m v1.26.15 node/node02 Ready <none> 7h25m v1.26.15 NAME READY STATUS RESTARTS AGE pod/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