k8s 打标签(为node节点区分测试及预生产等环境)

本文需求,实际场景中有多个节点,但为了区分不同环境运行在不同的node节点上区分环境及环境运行的影响。把不同环境的pods分发到指定的node节点上。

1、查看现有节点运行环境已有标签

~]# kubectl get nodes --show-labels
NAME      STATUS   ROLES                  AGE     VERSION   LABELS
master1   Ready    control-plane,master   6d3h    v1.21.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master1,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
node2     Ready    <none>                 3h35m   v1.21.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master2,kubernetes.io/os=linux
node1     Ready    <none>                 5d23h   v1.21.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux
以上是默认现有的一些标签

2、添加标签

]# kubectl label node node1 env-role=uat
node/node1 labeled

]# kubectl label node node2 env-role=prod
node/node2 labeled

]# kubectl get node --show-labels  (查看标签)
NAME      STATUS   ROLES                  AGE     VERSION   LABELS
master1   Ready    control-plane,master   6d4h    v1.21.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master1,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers=
node2     Ready    <none>                 4h7m    v1.21.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,env-role=prod,kubernetes.io/arch=amd64,kubernetes.io/hostname=master2,kubernetes.io/os=linux
node1     Ready    <none>                 5d23h   v1.21.3   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,env-role=uat,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1,kubernetes.io/os=linux

3、指定标签分发pod

~]# cat nginx_node1.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-node1
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      nodeSelector:
        env-role: uat      #指定标签
      containers:
      - name: nginx-node1
        image: nginx:latest
        ports:
        - containerPort: 80

4、查看分发pod在哪个node上

~]# kubectl get pods -o wide
NAME                             READY   STATUS    RESTARTS   AGE   IP            NODE      NOMINATED NODE   READINESS GATES
nginx-node1-5f4b6d4d5b-ldk9b     1/1     Running   0          59m   10.244.2.36   node1     <none>           <none>
nginx-node1-5f4b6d4d5b-pltjv     1/1     Running   0          59m   10.244.2.35   node1     <none>           <none>

6、 删除标签

]# kubectl label node node1 env-role-
node/node1 labeled

~]# kubectl label node node2 env-role-
node/node2 labeled
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
K8SKubernetes)是一个开源的容器编排工具,用于自动化部署、扩展和管理容器化应用程序。在K8S中,Node节点)是指一个运行Kubernetes集群的机器,它可以是物理服务器、虚拟机或者云服务器。 为了设置Node的角色,我们可以通过以下步骤进行操作: 1. 添加Node: 首先,我们需要将一个新的Node添加到已经存在的Kubernetes集群中。这可以通过执行kubectl命令或者API请求来完成。在添加Node时,会生成一个唯一的Node ID,用于识别该Node。 2. 分配角色: 在Kubernetes中,Node有不同的角色,例如Master或者Worker。Master节点用于管理和控制整个集群的操作,而Worker节点用于运行容器工作负载。我们可以通过kubectl命令或者修改Cluster配置文件来分配角色。 3. 配置标签: 为了进一步区分Node,我们可以为其添加标签标签是键值对的形式,用于根据特定的要求选择Node。例如,我们可以为Node添加标签"environment=production",以指示该Node用于生产环境。 4. 节点亲和性(node affinity)和容忍度(tolerations): 对于特定的工作负载,我们可以配置节点亲和性和容忍度规则,以使其仅在满足特定条件的Node上运行。节点亲和性可以根据标签选择特定的Node,而容忍度则定义了能够容忍的节点条件。 5. 高可用性和自动伸缩: K8S还支持高可用性和自动伸缩功能。通过将多个Master节点配置为高可用模式,可以确保集群的稳定性和可靠性。自动伸缩功能可根据工作负载的变化自动扩展或收缩Node。 通过上述步骤,我们可以轻松地设置K8SNode角色,并根据需求对Node进行管理和配置。这些步骤还可以根据Kubernetes的版本和部署方式进行细微调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值