k8s核心资源之namespace与pod污点容忍度生命周期进阶篇(四)


注:因编辑器的问题yaml语法格式可能显示不正确

1、命名空间namespace

1.1 什么是命名空间?

Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。
命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间,例如,可以为test、devlopment、production环境分别创建各自的命名空间。

1.2 namespace应用场景

命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。

1、查看名称空间及其资源对象
k8s集群默认提供了几个名称空间用于特定目的,例如,kube-system主要用于运行系统级资源,存放k8s一些组件的。而default则为那些未指定名称空间的资源操作提供一个默认值。

使用kubectl get namespace可以查看namespace资源,使用kubectl describe namespace $NAME可以查看特定的名称空间的详细信息。

2、管理namespace资源
namespace资源属性较少,通常只需要指定名称即可创建,如“kubectl create namespace qa”。namespace资源的名称仅能由字母、数字、下划线、连接线等字符组成。删除namespace资源会级联删除其包含的所有其他资源对象。

1.3 namespacs常用指令

① 创建一个test命名空间
# kubectl create ns test

② 切换命名空间
# kubectl  config set-context --current --namespace=kube-system
#切换命名空间后,kubectl get pods 如果不指定-n,查看的就是kube-system命名空间的资源了。 
#查看哪些资源属于命名空间级别的

image

1.4 namespace资源限额

namespace是命名空间,里面有很多资源,那么我们可以对命名空间资源做个限制,防止该命名空间部署的资源超过限制。
如何对namespace资源做限额呢?

# vim namespace-quota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-quota
  namespace: test
spec:
  hard:
    requests.cpu: "2"
    requests.memory: 2Gi
    limits.cpu: "4"
    limits.memory: 4Gi

#创建的ResourceQuota对象将在test名字空间中添加以下限制:
  每个容器必须设置内存请求(memory request),内存限额(memory limit),cpu请求(cpu request)和cpu限额(cpu limit)。
    所有容器的内存请求总额不得超过2GiB。
    所有容器的内存限额总额不得超过4 GiB。
    所有容器的CPU请求总额不得超过2 CPU。
    所有容器的CPU限额总额不得超过4CPU。

#创建pod时候必须设置资源限额,否则创建失败,如下:
# vim pod-test.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-test
  namespace: test
  labels:
    app: tomcat-pod-test
spec:
  containers:
  - name:  tomcat-test
    ports:
    - containerPort: 8080
    image: hxu/tomcat-8.5-jre8:v1
    imagePullPolicy: IfNotPresent

[root@k8s-master1 ~]# kubectl apply -f pod-test.yaml
[root@k8s-master1 kubenetes-han]# kubectl get pod -n test
NAME       READY   STATUS    RESTARTS   AGE
pod-test   1/1     Running   0          67s

2、标签

2.1 什么是标签?

标签其实就一对 key/value ,被关联到对象上,比如Pod,标签的使用我们倾向于能够表示对象的特殊特点,就是一眼就看出了这个Pod是干什么的,标签可以用来划分特定的对象(比如版本,服务类型等),标签可以在创建一个对象的时候直接定义,也可以在后期随时修改,每一个对象可以拥有多个标签,但是,key值必须是唯一的。创建标签之后也可以方便我们对资源进行分组管理。如果对pod打标签,之后就可以使用标签来查看、删除指定的pod。
在k8s中,大部分资源都可以打标签。

2.2 如何给pod资源打标签

显示如下,显示如下,说明标签达成功了;

[root@k8s-master1 kubenetes-han]# kubectl get pods pod-test -n test --show-labels
NAME       READY   STATUS    RESTARTS   AGE     LABELS
pod-test   1/1     Running   0          3m55s   app=tomcat-pod-test
# 1、对已经存在的pod打标签,release=v1 
[root@k8s-master1 kubenetes-han]# kubectl label pods pod-test  release=v1 -n test
pod/pod-test labeled
# 2、查看标签是否打成功:
[root@k8s-master1 kubenetes-han]# kubectl get pods pod-test -n test --show-labels
NAME       READY   STATUS    RESTARTS   AGE     LABELS
pod-test   1/1     Running   0          4m40s   app=tomcat-pod-test,release=v1

2.3 查看资源标签

查看默认名称空间下所有pod资源的标签

[root@k8s-master1 kubenetes-han]#  kubectl get pods --show-labels 
NAME                          READY   STATUS    RESTARTS   AGE   LABELS
demo-pod                      1/1     Running   0          15d   app=myapp,env=dev
nginx-test-57f9f5b6d7-8zt7x   1/1     Running   0          38m   app=nginx,pod-template-hash=57f9f5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值