二十三、node、Label、namespace管理

这篇具有很好参考价值的文章主要介绍了二十三、node、Label、namespace管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Node的隔离与恢复

二、Node 的扩容

三、Label

四、Namespace:集群环境共享与隔离

1、创建namespace

2、定义Context

3、设置工作组在特定的Context中工作


一、Node的隔离与恢复

        在硬件升级、维护等情况下,我们需要将某些node隔离,使其脱离Kubernetes集群的调度范围,Kubernetes提供了一种机制,既可以将Node纳入调度范围,也可以将Node脱离调度范围。我们可以使用yaml文件或者kubectl 命令进行调整

1、使用yaml文件
[root@k8s-master-1 node-manager]# vim node.yaml
apiVersion: v1
kind: Node
metadata:
  name: k8s-node-1
  labels:
    kubernetes.io/hostname: k8s-node-1
spec:
  unschedulable: true
[root@k8s-master-1 node-manager]# kubectl apply -f node.yaml 
node/k8s-node-1 configured
[root@k8s-master-1 node-manager]# kubectl get node
NAME         STATUS                     ROLES    AGE     VERSION
k8s-node-1   Ready,SchedulingDisabled   <none>   6m39s   v1.19.0
k8s-node-2   Ready                      <none>   65d     v1.19.0
可以看到其中添加了一项SchedulingDisabled,这样后续系统就不会将创建的pod调度到该node了。
如果需要将某个node纳入调度的范围,则需要将unschedulable: false  就能恢复调度了。

2、使用kubectl patch 命令
我们也可以直接运行kubectl patch命令实现Node的隔离调度效果,不适用yaml文件
[root@k8s-master-1 node-manager]# kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true} }'
node/k8s-node-1 patched

[root@k8s-master-1 node-manager]# 
[root@k8s-master-1 node-manager]# kubectl get node
NAME         STATUS                     ROLES    AGE   VERSION
k8s-node-1   Ready,SchedulingDisabled   <none>   14m   v1.19.0
k8s-node-2   Ready                      <none>   65d   v1.19.0
[root@k8s-master-1 node-manager]# 

[root@k8s-master-1 node-manager]# kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":false} }'
node/k8s-node-1 patched

[root@k8s-master-1 node-manager]# 
[root@k8s-master-1 node-manager]# kubectl get node
NAME         STATUS   ROLES    AGE   VERSION
k8s-node-1   Ready    <none>   14m   v1.19.0
k8s-node-2   Ready    <none>   65d   v1.19.0

3、使用kubectl cordon 和uncordon命令
使用kubectl 子命令 cordon和uncordon也可以实现Node的隔离与恢复调度。
[root@k8s-master-1 node-manager]# kubectl cordon k8s-node-1
node/k8s-node-1 cordoned

[root@k8s-master-1 node-manager]# 
[root@k8s-master-1 node-manager]# kubectl get node
NAME         STATUS                     ROLES    AGE   VERSION
k8s-node-1   Ready,SchedulingDisabled   <none>   16m   v1.19.0
k8s-node-2   Ready                      <none>   65d   v1.19.0

[root@k8s-master-1 node-manager]# 
[root@k8s-master-1 node-manager]# kubectl uncordon k8s-node-1
node/k8s-node-1 uncordoned

[root@k8s-master-1 node-manager]# 
[root@k8s-master-1 node-manager]# kubectl get node
NAME         STATUS   ROLES    AGE   VERSION
k8s-node-1   Ready    <none>   16m   v1.19.0
k8s-node-2   Ready    <none>   65d   v1.19.0

注意:某个Node脱离调度范围时,其上运行的Pod并不会自动停止,用户需要对其手动停止。

二、Node 的扩容

        在实际生产系统中经常出现服务器容量不足的情况,这时就需要购买新的服务器,然后将应用系统进行水平扩展来完成对系统的扩容。

        在新的Node上安装docker、kubectl、和kube-proxy服务,然后配置kubectl、和kube-proxy服务的启动参数,然后将master url指定为当前kubernetes集群master的地址,然后启动服务即可。

三、Label

        Label(标签)使用户可灵活定义的对象属性,对于正在运行的资源对象,我们随时可以通过kubectl label命令进行增删改操作。

查看标签               [root@k8s-master-1 test]# kubectl get 资源类型(pod、node等等) --show-labels
制作标签               kubectl label 资源类型 资源名称 标签key=标签value
                      [root@k8s-master-1 test]# kubectl label pod slave cpu=8cup32g
删除标签               [root@k8s-master-1 test]# kubectl label pod slave cpu-
修改标签               [root@k8s-master-1 test]# kubectl label pod slave cpu=8cup32g --pverwrite

四、Namespace:集群环境共享与隔离

        在一个组织内部,不通的工作组可以在同一个kubernetes集群中工作,kubernetes通过Namespace(命名空间)和Context的设置对不同的工作组进行区分,使得它们既可以共享同一个kubernetes集群的服务,也可以互不干扰。

1、创建namespace

为了实现这两个分组,需要创建两个命名空间

[root@k8s-master-1 node-manager]# vim namespaces.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: test1
---
apiVersion: v1
kind: Namespace
metadata:
  name: test2
[root@k8s-master-1 node-manager]# kubectl apply -f namespaces.yaml 
namespace/test1 created
namespace/test2 created
[root@k8s-master-1 node-manager]# kubectl get ns
NAME              STATUS   AGE

test1             Active   3s
test2             Active   3s
或者使用kubectl 命令创建
[root@k8s-master-1 node-manager]# kubectl create ns test1
namespace/test1 created
#删除命名空间
[root@k8s-master-1 node-manager]# kubectl delete ns test1 test2
namespace "test1" deleted

2、定义Context

        接下来,需要为每个工作组分别定义一个Context,即运行环境,这个环境将属于某个特定的命名空间

        通过 kubectl config set-context 命令定义Context,并将Context 置于之前创建的命名空间中

1、先创建两个命名空间,development为开发、production为生产
[root@k8s-master-1 node-manager]# kubectl create ns development
namespace/development created
[root@k8s-master-1 node-manager]# kubectl create ns production
namespace/production created
2、创建一个集群名称:
[root@k8s-master-1 node-manager]# kubectl config set-cluster k8s-cluster --server=https://192.168.134.135:8080
Cluster "k8s-cluster" set.
3、创建Context:创建以后会在:~/.kube/config中生成一个context
[root@k8s-master-1 node-manager]# kubectl config set-context ctx-dev --namespace=development --cluster=k8s-cluster --user=dev
Context "ctx-dev" created.
[root@k8s-master-1 node-manager]# kubectl config set-context ctx-prod --namespace=production --cluster=k8s-cluster --user=prod
Context "ctx-prod" created.
4、通过 kubectl config view  查看已经定义的Context
apiVersion: v1
clusters:
- cluster:
    server: https://192.168.134.135:8080
  name: k8s-cluster
contexts:
- context:
    cluster: k8s-cluster
    namespace: development
    user: dev
  name: ctx-dev
- context:
    cluster: k8s-cluster
    namespace: production
    user: prod
  name: ctx-prod
current-context: ctx-dev
kind: Config
preferences: {}
users: null

3、设置工作组在特定的Context中工作

        我们可以通过 kubectl config use-context 命令设置当前的运行环境, 文章来源地址https://www.toymoban.com/news/detail-833014.html

1、通过下面命令把当前工作环境设置为 ctx-dev 开发环境
[root@k8s-master-1 node-manager]# kubectl config use-context ctx-dev
Switched to context "ctx-dev".

2、切换到运维组
[root@k8s-master-1 ~]# kubectl config use-context ctx-prod
Switched to context "ctx-prod".

3、获取当前K8S上下文
[root@k8s-master-1 ~]# kubectl config current-context
ctx-dev

4、或取全局上下文
[root@k8s-master-1 ~]# kubectl config get-contexts
CURRENT   NAME       CLUSTER       AUTHINFO   NAMESPACE
*         ctx-dev    k8s-cluster   dev        development
          ctx-prod   k8s-cluster   prod       production
命令解释
CURRENT: * 在哪个上面表示当前所处哪个集群
NAME:上下文名称
CLUSTER:集群名称
AUTHINFO:用户名称
NAMESPACE:所处命名空间

5、切换上下文
命令:kubectl config use-context 上下文名称 【kubectl config get-contexts中NAME就是上下文名称】

6、重命名context
命令:kubectl config rename-context 现名称 新名称
我将context1修改为context1-new
kubectl config rename-context context1 context1-new

7、删除context
命令:kubectl config delete-context 上下文名称

到了这里,关于二十三、node、Label、namespace管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 商城-学习整理-集群-K8S(二十三)

    1)、简介 Kubernetes 简称 k8s。是用于自动部署,扩展和管理容器化应用程序的开源系统。 中文官网:https://kubernetes.io/zh/ 中文社区:https://www.kubernetes.org.cn/ 官方文档:https://kubernetes.io/zh/docs/home/ 社区文档:http://docs.kubernetes.org.cn/ 部署方式的进化 https://kubernetes.io/zh/docs/concept

    2024年02月11日
    浏览(49)
  • k8s资源管理命令与Namespace使用详解

    目录 一、前言 二、k8s概述 三、k8s常用操作管理命令 3.1 kubectl 命令用法

    2023年04月16日
    浏览(53)
  • Kubernetes基础(二十一)-k8s的服务发现机制

    Kubernetes(K8s)是一个强大的容器编排平台,提供了丰富的功能来简化容器化应用的管理。其中之一重要的特性就是服务发现机制,它使得应用程序能够在K8s集群中动态地发现和访问其他服务。本文将深入研究K8s中的服务发现机制,探讨其原理、使用方法以及通过详细的示例演

    2024年02月20日
    浏览(49)
  • Kubernetes基础(二十)-k8s存储对象Storage Classes

    在Kubernetes中,Storage Classes是用于定义不同存储配置的资源。它们允许开发者抽象存储的物理细节,使其更易于管理和使用。通过Storage Classes,可以定义存储的类型、性能、卷大小等参数,使得应用程序能够根据需求选择合适的存储。 Storage Classes工作的基本原理是通过定义标

    2024年02月19日
    浏览(43)
  • k8s-1.28.2权限管理(系统普通用户查看对应namespace)

    操作前提是已经有namespace,本文的namespace是nacos umask 077; openssl genrsa -out nacos1.key 2048 参数:-subj指定组和用户,其中O是组名,CN是用户名 openssl req -new -key nacos1.key -out nacos1.csr -subj \\\"/O=nacos1/CN=nacos1\\\" openssl x509 -req -in nacos1.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreat

    2024年01月24日
    浏览(67)
  • Kubernetes(K8s)从入门到精通系列之十三:软件负载平衡选项

    当设置具有多个控制平面的集群时,可以通过将 API Server 实例置于负载均衡器后面并在运行 kubeadm init 以便新集群使用它时使用 --control-plane-endpoint 选项来实现更高的可用性。 当然,负载均衡器本身也应该具有高可用性。这通常是通过向负载均衡器添加冗余来实现的。为此,

    2024年02月14日
    浏览(50)
  • Kubernetes基础(二十二)-K8S的PV/PVC/StorageClass详解

    先来个 一句话总结 :PV、PVC是K8S用来做存储管理的资源对象,它们让存储资源的使用变得 可控 ,从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去 自动化创建 PV的组件。所有Pod使用存储只有一个原则: 先规划  →  后申请  →  再使用 。 1.1 PV概念

    2024年02月20日
    浏览(52)
  • 飞天使-k8s知识点19-kubernetes实操4-资源调度 标签和选择器:Label与Selector的使用-版本回退

    添加label 资源调度 Deployment:创建与配置文件解析 rs pod deploy 的关联信息展示 Deployment:滚动更新 Deployment:回滚 回退版本实际操作

    2024年02月20日
    浏览(52)
  • 【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

    一、docker的问世         在LXC(Linux container)Linux容器虚拟技术出现之前,业界网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。 虚拟机是什么?         虚拟机其实就是 在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。

    2024年03月26日
    浏览(71)
  • Kubernetes(k8s):Pod 的 Node Selector详解

    💖The Begin💖点点关注,收藏不迷路💖 Node Selector是Kubernetes中一个用于指定Pod部署位置的重要概念。通过Node Selector,用户可以将Pod调度到具有特定标签的节点上。 这种标签通常用于区分节点的硬件配置、地理位置、网络特性等。通过合理地设置Node Selector,用户可以优化应用

    2024年04月08日
    浏览(87)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包