Kubernetes中创建命名空间实现方法

目录
  • 正文
  • 命名空间类型
    • 查看命名空间
  • 创建命名空间
  • 结论

正文

命名空间系统对计算来说并不陌生,我们大多数人可能在几乎所有编程语言中都见过命名空间,无论您在哪里遇到命名空间,其基本目的都是相同的:用于逻辑分组。

同样,在 Linux 内核中,也有命名空间的概念,比如存储和网络命名空间。每个容器也有自己的存储命名空间和网络命名空间,用于资源的隔离和分配。

Kubernetes命名空间是指由同一物理集群支持的虚拟集群,此选项专为在多个用户分布在多个工作团队或项目的环境中使用而设计。

本文将介绍如何创建Kubernetes命名空间。

命名空间类型

Kubernetes 中有三种命名空间。

  • Default:默认命名空间用于没有其他命名空间的对象。
  • Kube-system:Kubernetes 系统起源对象的命名空间。
  • Kube-public:用于需要对所有用户公开可用的资源的命名空间。

查看命名空间

可以使用以下命令查看当前的命名空间:

kubectl get namespaces

它将列出现有的命名空间、状态等。

如果想知道特定命名空间的概要,可以使用以下命令:

Kubectl get namespaces <name>

还可以使用以下命令获取特定命名空间的详细描述:

Kubectl describe namespace <name>

描述显示资源配额(如果指定)和资源范围,其中资源配额显示命名空间可以使用的资源总量,资源范围显示可以消耗的最小或最大资源。

还显示名称空间是活动的还是终止的,这是任何命名空间的两种状态,活动命名空间是当前使用的命名空间,而终止命名空间是正在删除且无法进一步使用的命名空间。

创建命名空间

尝试在不存在的特定命名空间中创建一个 pod。

要在“test-env”命名空间中创建一个 pod,请执行以下命令。

kubectl run nginx --image=nginx --namespace=test-env #尝试在不存在的命名空间中创建一个pod。

Pod 不会在不存在的命名空间中创建,因此我们首先需要创建一个命名空间。

要创建命名空间“test-env”,请执行以下命令(k8s create namespace)。

kubectl create namespace test-env #创建命名空间
kubectl get namespace #获取命名空间列表

现在我们有了一个命名空间,我们想在其中创建一个 pod。

要在我们创建的命名空间中创建一个 pod,请将 --namespace=test-env 选项传递给命令。

kubectl run nginx --image=nginx --namespace=test-env #在命名空间中创建一个pod。

如果您尝试在不指定命名空间的情况下获取 pod,您将无法获取 pod 的详细信息。

kubectl get pods #获取pod列表

要获取属于“test-env”命名空间的 pod 的详细信息,请使用以下命令。

kubectl get pods --namespace=test-env #获取指定命名空间中的pod列表

如果要将命名空间设置为默认命名空间,则不需要在命令中指定命名空间选项,请使用以下命令。

kubectl config set-context --current --namespace=test-env #设置默认命名空间

现在无需在命令中指定命名空间即可获取 pod 的详细信息。

kubectl get pods #从默认命名空间中获取 pod 列表

要切换到默认命名空间,请使用以下命令。

kubectl config set-context --current --namespace=default #检查命名空间为默认值
kubectl get pods #获取pod列表

要检查哪个是默认命名空间,请使用以下命令。

kubectl config view --minify | grep namespace: #Extract the namespace from the kubernetes config file.
kubectl config set-context --current --namespace=test-env #Set default namespace in the config file.
kubectl config view --minify | grep namespace:

检查哪些 Kubernetes 资源是命名空间,执行以下命令。

kubectl api-resources --namespaced=true #获取可以在命名空间中的Kubernetes对象

要查看哪些 Kubernetes 资源不在命名空间中,请使用以下命令。

kubectl api-resources --namespaced=false #获取永远不能在命名空间中的Kubernetes对象列表

您可以使用下面提到的命令获取命名空间的详细信息。

kubectl get namespaces #获取命名空间列表。
kubectl describe namespace test-env #获取命名空间的详细信息。

命名空间也可以使用 .yml 文件创建。

vim namespace-using-file.yml #创建命名空间定义文件

执行以下命令以创建对象定义文件中指定的命名空间。

kubectl create -f namespace-using-file.yml #使用.yml文件创建命名空间
kubectl get namespaces #获取命名空间列表

当您不再需要命名空间时,可以使用以下命令将其删除。

kubectl get namespaces #获取命名空间列表
kubectl delete namespaces env-prod test-env #删除一个命名空间
kubectl get namespaces #获取命名空间列表

使用命令“kubectl change namespace”切换到不同的命名空间。

结论

Kubernetes 使得用户可以自由地在自己的空间中使用分配的资源进行工作,以最佳方式利用他们的时间和资源,而不会在团队之间造成混乱,Kubernetes 命名空间有助于应用程序开发,并使开发人员的日常任务易于完成。

以上就是Kubernetes中创建命名空间实现方法的详细内容,更多关于Kubernetes 创建命名空间的资料请关注我们其它相关文章!

(0)

相关推荐

  • MySQL 集群迁移到 Kubernetes操作步骤

    目录 背景 适用场景 前提条件 操作步骤 Step 1:自建集群开启 GTID Step 2:容器集群在线迁移全量数据 Step 3:进行增量同步 Step 4:同步数据到容器集群的其他节点 Step 5:业务切换 Step 6:停止同步 总结 背景 如果你有自建的 MySQL 集群,并且已经感受到了云原生的春风拂面,想将数据迁移到 Kubernetes 上,那么这篇文章可以给你一些思路. 文中将自建 MySQL 集群数据,在线迁移到 Kubernetes 的 MySQL 集群中,快速实现了 M

  • Go语言k8s kubernetes使用leader election实现选举

    目录 一.背景 二.官网代码示例 三.锁的实现 一.背景 在kubernetes的世界中,很多组件仅仅需要一个实例在运行,比如controller-manager或第三方的controller,但是为了高可用性,需要组件有多个副本,在发生故障的时候需要自动切换.因此,需要利用leader election的机制多副本部署,单实例运行的模式.应用程序可以使用外部的组件比如ZooKeeper或Etcd等中间件进行leader eleaction, ZooKeeper的实现是采用临时节点的方案,临时节

  • Centos7 安装部署Kubernetes(k8s)集群实现过程

    目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4.1 环境介绍 4.2 配置节点的基本环境 4.3 节点安装docker,并进行相关配置 4.4 安装kubelet,kubeadm,kubectl 4.5 kubeadm初始化 4.6 添加worker节点到k8s集群 4.7 部署CNI网络插件calico 4.8 配置kubectl命令tab键自

  • kubernetes k8s常用问题排查方法

    目录 Pod 的那些状态 镜像拉取失败 启动后容器崩溃 容器被驱逐 总结 Pod 的那些状态 使用 K8s 部署我们的服务之后,为了观察 Pod 是否成功,我们都会使用下面这个命令查询 Pod 的状态. kubectl get pods NAME READY STATUS RESTARTS AGE my-app-5d7d978fb9-2fj5m 0/1 ContainerCreating 0 10s my-app-5d7d978fb9-dbt89 0/1 ContainerCreating 0

  • Kubernetes集群模拟删除k8s重装详解

    目录 一.系统环境 二.前言 三.重装Kubernetes集群 3.1 环境介绍 3.2 删除k8s所有节点(node) 3.3 kubeadm初始化 3.4 添加worker节点到k8s集群 3.5 安装calico 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64 二.前言 当我们安装部署好一套Kubernetes集群,使用一段时间之后可能会有重新

  • 云原生系列Kubernetes深度解析YAML文件使用

    目录 写在前面 YAML基础 Maps Lists 使⽤ YAML 创建 Pod 创建 Pod 创建 Deployment 写在前面 在前⾯的课程中,我们在安装 kubernetes 集群的时候使⽤了⼀些 YAML ⽂件来创建相关的资源,但大家对 YAML ⽂件还是⾮常陌⽣.所以我们先来简单看⼀看 YAML ⽂件是如何⼯作的,并使⽤ YAML ⽂件来定义⼀个 k8s pod,然后再定义⼀个 k8s deployment吧. YAML基础 它的基本语法规则如下: ⼤⼩写敏感 使⽤缩进表示层级关系

  • Kubernetes k8s configmap 容器技术解析

    目录 1.什么是 ConfigMap? 2.ConfigMap 能带来什么好处? 3.ConfigMap 三种创建方式 4.ConfigMap 作为环境变量三种使用方式 单个引用 多个引用 args 方式传递环境变量 5.挂载 volume 6.Secret 使用 7.应用程序怎么做到不重启情况下读取最新配置 总结 1.什么是 ConfigMap? ConfigMap 是用来存储配置文件的 Kubernetes 资源对象,配置对象存储在 Etcd 中,配置的形式可以是完整的配置文件.key/va

  • Kubernetes中创建命名空间实现方法

    目录 正文 命名空间类型 查看命名空间 创建命名空间 结论 正文 命名空间系统对计算来说并不陌生,我们大多数人可能在几乎所有编程语言中都见过命名空间,无论您在哪里遇到命名空间,其基本目的都是相同的:用于逻辑分组. 同样,在 Linux 内核中,也有命名空间的概念,比如存储和网络命名空间.每个容器也有自己的存储命名空间和网络命名空间,用于资源的隔离和分配. Kubernetes命名空间是指由同一物理集群支持的虚拟集群,此选项专为在多个用户分布在多个工作团队或项目的环境中使用而设计. 本文将介绍如何

  • 如何在kubernetes中创建Pod

    目录 如何创建Pod? kubectl工具 如何创建Pod? 在之前的文章中,我们介绍了容器和Pod的区别和关系.我们知道Pod是k8s调度的最小单位,而一个Pod中可以有多个容器,那么我们如何来定义一个我们自己的Pod呢? 在k8s中,我们通常使用编写配置文件的方式创建一个Pod,配置文件的格式通常采用yaml格式,(yaml格式如何表示list.key-value键值对,这些知识在前一篇文章中说过了),编写好yaml文件之后,通过下面的办法来启动一个Pod: kubectl create -

  • 在 Python 中创建DataFrame的方法

    目录 方法一:创建空的DataFrame ​方法二:使用List创建DataFrame​ ​方法三:使用字典创建DataFrame​ ​方法四:使用数组创建带索引DataFrame​ 方法五:从字典列表创建DataFrame ​方法六:使用zip()函数创建DataFrame​ ​方法七:从序列的字典创建DataFrame​ 前言: DataFrame是数据的二维集合. 它是一种数据结构,其中数据以表格形式存储. 数据集按行和列排列: 我们可以在DataFrame中存储多个数据集. 我们可以执行

  • Android App在线程中创建handler的方法讲解

    相关概念 1.Handler:可以看做是一个工具类,用来向消息队列中插入消息的; 2.Thread:所有与Handler相关的功能都是与Thread密不可分的,Handler会与创建时所在的线程绑定; 3.Message:消息; 4.MessageQueue:消息队列,对消息进行管理,实现了一个Message链表; 5.Looper:消息循环,从MessageQueue中取出Message进行处理: 6.HandlerThread:继承Thread,实例化时自动创建Looper对象,实现一个消息

  • 在Linux分区或逻辑卷中创建文件系统的方法

    前言 学习在你的系统中创建一个文件系统,并且长期或者非长期地挂载它. 在计算技术中,文件系统控制如何存储和检索数据,并且帮助组织存储媒介中的文件.如果没有文件系统,信息将被存储为一个大数据块,而且你无法知道一条信息在哪结束,下一条信息在哪开始.文件系统通过为存储数据的文件提供名称,并且在文件系统中的磁盘上维护文件和目录表以及它们的开始和结束位置.总的大小等来帮助管理所有的这些信息. 在 Linux 中,当你创建一个硬盘分区或者逻辑卷之后,接下来通常是通过格式化这个分区或逻辑卷来创建文件系统.这个

  • JavaScript中创建原子的方法总结

    前言 原子操作这是Java多线程编程的老生常谈了.所谓原子操作是指不会被线程调度机制打断的操作:这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程). 当然JS是单线程的,所以不存在线程打断这么一说,我只是从Java中借引了这么一个概念.如果一段JS代码在执行过程中没有未知操作被引入,那么这段代码就是100%可控和安全的,这就是原子操作.反之非原子操作可能会因为外界操作的引入导致代码变得难以控制而产生隐晦的bug. JavaScript中可以通过

  • 使用c#在word文档中创建表格的方法详解

    复制代码 代码如下: public string CreateWordFile()        {            string message = "";            try            {                Object Nothing = System.Reflection.Missing.Value;                string name = "xiehuan.doc";               

  • 如何在Angular应用中创建包含组件方法示例

    理解组件包含 包含组件就是指可以包含其它组件的组件, 以 Bootstrap 的卡片 (Card) 为例, 它包含页眉 (header) . 主体 (body) 和 页脚 (footer) , 如下图所示: <div class="card text-center"> <div class="card-header"> Featured </div> <div class="card-body">

  • Java在Excel中创建透视表方法解析

    本文内容介绍通过Java程序在Excel表格中根据数据来创建透视表. 环境准备 需要使用Excel类库工具-Free Spire.XLS for Java,这里使用的是免费版,可通过官网下载Jar包并解压,手动导入lib文件夹下的Spire.Xls.jar到Java程序:或者也可以通过Maven仓库下载导入. Java代码示例 import com.spire.xls.*; public class CreatePivotTable { public static void main(Strin

  • Python中创建表格的方法你知道吗

    目录 1. 引言 2. 准备工作 3. 举个栗子 3.1 使用list生成表格 3.2 使用dict生成表格 3.3 增加索引列 3.4 缺失值处理 4. 总结 1. 引言 如果能够将我们的无序数据快速组织成更易读的格式,对于数据分析非常有帮助. Python 提供了将某些表格数据类型轻松转换为格式良好的纯文本表格的能力,这就是 tabulate 库. 2. 准备工作 安装tabulate库安装tabulate库非常容易,使用pip即可安装,代码如下: pip install tabulate

随机推荐