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 30mAPIVERSION:资源所属的 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
不在线第一只蜗牛
还未添加个人签名 2023-06-19 加入
还未添加个人简介









评论