第 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

img

作用

  • 多套环境的资源隔离

  • 多租户的资源隔离

默认 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 中

Deployment

Service

posted @   Wndexx  阅读(6)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示