第 4 章 资源详解
资源分类
# 查看所有资源
kubectl api-resources
分类
| 资源分类 | 资源名称 | 缩写 |
|---|---|---|
| 集群级别资源 | nodes | no |
| namespaces | ns | |
| pod 资源 | pods | po |
| pod 资源控制器 | replicationcontrollers | rc |
| replicasets | rs | |
| deployments | deploy | |
| daemonsets | ds | |
| jobs | ||
| cronjobs | cj | |
| horizontalpodautoscalers | hpa | |
| statefulsets | sts | |
| 服务发现资源 | services | svc |
| ingress | ing | |
| 存储资源 | volumeattachments | |
| persistentvolumes | pv | |
| persistentvolumeclaims | pvc | |
| 配置资源 | configmaps | cm |
| secrets |
Namespace

作用
-
多套环境的资源隔离
-
多租户的资源隔离
默认 namespace
# 未指定 Namespace 的对象所处的命名空间
default
# 集群节点之间的心跳维护,v1.13 开始引入
kube-node-lease
# 此命名空间下的资源可以被所有人访问(包括未认证用户)
kube-public
# 所有由 kubernetes 系统创建的资源都处于这个命名空间
kube-system
操作
查看
# 查看所有的 ns
kubectl get ns
# 查看指定的 ns
kubectl get ns 名称
# 指定输出格式
kubectl get ns 名称 -o 格式参数
格式参数:
wide 更多信息
json json格式输出详细信息
yaml yaml格式输出详细信息
# 查看 ns 详情
kubectl describe ns 名称
Name: kube-system
Labels: <none>
Annotations: <none>
Status: Active # Active:命名空间正在使用中;Terminating:正在删除命名空间
No resource quota. # 针对 namespace 做的资源限制
No LimitRange resource. # 针对 namespace 中的每个组件做的资源限制
创建
# 注意:不能使用 `kubectl create namespaces 名称` 来创建命名空间
kubectl create ns 名称
删除
kubectl delete ns 名称
配置方式
apiVersion: v1
kind: Namespace
metadata:
name: dev
Label
作用
通过在资源上添加标识,对其进行区分和选择
Label 可以实现资源的多维度分组,以便灵活、方便地进行资源分配、调度、配置、部署等管理工作
特点
- 以键值对的形式附加在资源对象上,例如:Node、Service、Pod 等
- 资源对象可定义任意数量的 Label,同一个 Label 可被添加到任意数量的资源对象上
- Label 通常在定义资源对象时确定,但也可在其创建后动态地添加或删除
示例
版本标签:"version":"release", "version":"stable",...
环境标签:"environment":"dev", "environment":"test", "environment":"pro"
架构标签:"tier":"frontend", "tier":"backend"
定义
# 查看标签
kubectl get po nginx-64777cd554-zfj94 --show-labels
# pod 资源打标签
kubectl label po nginx-64777cd554-zfj94 version=1.0
# pod 资源更新标签
kubectl label po nginx-64777cd554-zfj94 version=2.0 --overwrite
# 筛选标签
kubectl get po -l version=2.0 --show-labels
# 删除标签
kubectl label po nginx-64777cd554-zfj94 version-
# 通过配置文件在创建资源对象时打标签
kubectl apply -f pod-nginx.yaml
#--*----- pod-nginx.yaml -----*--
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: dev
labels:
version: "3.0"
env: "test"
spec:
containers:
- image: nginx:1.17.1
name: pod
ports:
- name: nginx-port
containerPort: 80
protocol: TCP
#--*----- pod-nginx.yaml -----*--
标签定义完毕之后,需要使用 Label Selector 进行标签筛选
- Label 用于给某个资源对象定义标签
- Label Selector 用于筛选符合条件的资源对象
基于等式的 Label Selector
- version = 1.0:选择所有包含 Label 中 key="version" 且 value="1.0" 的资源对象
- version != 1.0:选择所有包含 Label 中 key="version" 且 value!="1.0" 的资源对象
基于集合的 Label Selector
- version in (1.0, 2.0):选择所有包含 Label 中的 key="version" 且 value="1.0" 或 "2.0" 的对象
- version not in (1.0, 2.0):选择所有包含 Label 中的 key="version" 且 value !="1.0" 或 "2.0" 的对象
kubectl get po -l run=nginx,version=1.0 --show-labels
kubectl get po -l 'run=nginx,version=1.0' --show-labels
kubectl get po -l 'version in (1.0)' --show-labels
Pod
介绍
pod 是 kubernetes 集群进行管理的最小单元,程序必须部署在容器中,而容器必须存在于 pod 中

浙公网安备 33010602011771号