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 来进行查看
例如:
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
复制代码 来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |