Kubernetes 默认的4种命名空间

这篇具有很好参考价值的文章主要介绍了Kubernetes 默认的4种命名空间。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  Kubernetes 集群安装完毕后随带许多( Namespace )命名空间。一些命名空间很重要,事关你的 Kubernetes 使用是否正常!

搞坏其中一个命名空间即会损坏 Kubernetes系统。

这些命名空间包括如下:

  • default:默认的命名空间。

  • kube-system:系统为对象创建的命名空间。

  • kube-public:该命名空间是自动创建的,所有用户(包括未验证身份的用户)都可以读取。该命名空间主要留给集群使用,以防某些资源在整个集群中应该可见、公开可读。这对于提供引导组件所需的集群信息都很有用。它主要由 Kubernetes 本身来管理。

  • kube-node-lease:该命名空间含有与每个节点关联的 Lease 对象。节点租用允许 kubelet 发送 heartbeat(心跳),以便控制平面能检测节点故障。

即使您不小心删除了 Kubernetes 系统的所有命名空间,它们也会再度重新生成。这是 Kubernetes 组件竭力所要做到的。

 注意:但有时如果您不走运,删除命名空间在终止阶段卡住,那就没有办法再度重新生成命名空间了。

所以下面提到了每个命名空间的重要性,以便知道相应的症状是什么样子。

default 是什么命名空间?

default 命名空间用作您在未指定命名空间的情况下,创建的任何对象的默认位置。

kube-system 是什么命名空间?

kube-system 是 Kubernetes 中拥有高级权限的对象和服务帐户的命名空间。

Kubernetes 控制器的使用源于该命名空间;换句话说,我们会在控制器方面遇到一些问题,在部署新的 pods/deployment 时可能会出现问题。

不仅如此,该命名空间还包含其他的重要对象,比如 kube-dns 和 kube-proxy, kube-dns 是集群域(cluster.local)的权威命名服务器,它递归解析外部名称。不完全限定的短名称(比如 myservice )先使用本地搜索路径来完成。

可以在此处(https://cloud.google.com/kubernetes-engine/docs/how-to/kube-dns)和此处(https://www.digitalocean.com/community/tutorials/an-introduction-to-the-kubernetes-dns-service)找到更多的详细信息。

kube-proxy管理这项工作:将发送到集群 Kubernetes 服务对象的虚拟IP地址,(VIP)的流量转发到适当的后端 pod;想了解更多的详细信息,请点击此处(https://www.tigera.io/blog/comparing-kube-proxy-modes-iptables-or-ipvs/)和此处(https://arthurchiao.art/blog/cracking-k8s-node-proxy/)。

这意味着您在解析外部/内部通信时会遇到困难。

kube-public 是什么命名空间?

kube-public 含有一个单一的 ConfigMap 对象 cluster-info,它有助于发现和安全引导。

如果您试图删除所有上述命名空间,服务器会给出如下响应:

Errorfrom server (Forbidden): namespaces "kube-public"is forbidden:thisnamespace may not be deleted

预计 Kubernetes v1.14 中添加的 kube-node-lease 会像任何普通的命名空间一样被删除。

kube-node-lease 是什么命名空间?

kube-node-lease 这个命名空间含有与每个节点关联的 Lease 对象。节点 lease 允许 kubelet 发送 heartbeat(心跳),以便控制平面(节点控制器)可以检测节点故障。

那么,如果我们删除了 kube-node-lease,会发生什么?Kubernetes 通常会为每个节点创建另一个带有 Lease 对象的对象,但有时命名空间移除操作会在终止状态卡住。

到那时我们会有一个节点 Lease,过时的 heartbeat 可能会告诉节点控制器:该节点访问不了,从而影响节点之间的整体通信。

如何修复终止时卡住的命名空间删除?

当然,您可以尝试弄清楚为何命名空间在终止时卡住,但有时您搞不清楚,这时我们可以使用强行删除。

创建一个临时 JSON 文件

kubectl getnamespace<terminating-namespace>-o json >tmp.json

执行以下命令:

$ kubectl proxy

Starting to serve on 127.0.0.1:8001
  • 编辑您的 tmp.json 文件。从 finalizers 字段中删除 Kubernetes 值,并保存文件。

  • 执行以下命令,更新命名空间:
  • $ curl -k -H "Content-Type: application/json"-X PUT --data-binary @tmp.json

  • http://127.0.0.1:8001/api/v1/namespaces/<terminating-namespace>/finalize

您的输出会像这样子:文章来源地址https://www.toymoban.com/news/detail-644490.html

{

    "kind":"Namespace",
    
    "apiVersion":"v1",

    "metadata":{

    "name":"<terminating-namespace>",

    "selfLink":"/api/v1/namespaces/<terminating-namespace>/finalize",

    "uid":"b50c9ea4-ec2b-11e8-a0be-fa163eeb47a5",

    "resourceVersion":"1602981",

    "creationTimestamp":"2021-10-18T18:48:30Z",

    "deletionTimestamp":"2021-10-18T18:59:36Z"

},

"spec":{



},

"status":{

    "phase":"Terminating"

}}

到了这里,关于Kubernetes 默认的4种命名空间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Kubernetes的默认调度和自定义调度详解

    默认调度是 Kubernetes 中的内置机制,它使用调度器组件来管理分配容器的节点。调度器依据以下原则选择合适的节点: 资源需求 :调度器会为每个 Pod 根据其 CPU 和内存需求选择一个具有足够资源的节点。 亲和性和容忍性 :通过亲和性规则和容忍性设置,可以将 Pod 调度到满

    2024年02月13日
    浏览(36)
  • 【Kubernetes资源篇】Namespace名称空间详解

    K8s中文手册: K8s名称空间中文官方手册: Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。 命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间。 在Kubernetes中,名称空间可以用来:

    2024年02月12日
    浏览(41)
  • Centos7系统环境下Kubernetes(K8s)默认最新版安装

    说明: 1.利用Kubeadm的方式安装K8s 2.除关闭防护墙外,其它均可以用于生产环境 3.安装最新K8s版本,如果有更新的版本,就会默认安装最新的版本,截止到目前最新版本是1.30 4.cri-dockerd和runc截止到目前是最新的,如果有最新版本的,根据提供的链接顺藤摸瓜去Github上下载。 注

    2024年04月29日
    浏览(48)
  • Java微服务架构的选择:Spring Cloud、Kubernetes还是Kubernetes + Istio?

    微服务架构已经成为现代软件开发的趋势,其可以带来高度可伸缩性、松耦合性和团队自治性等优势。 在Java开发领域中,选择适合的微服务架构是非常关键的决策,本文将探讨Spring Cloud、Kubernetes和Kubernetes+Istio这三个架构选择的优势和劣势。 1. 简介 在开始具体探讨之前,我

    2024年02月22日
    浏览(60)
  • 如何修改java中堆、栈空间的默认大小

     在命令行中输入java -X可以得到设置java堆大小和栈大小的命令     进入界面后 按Alt+V   修改前 本机的默认初始堆空间大小为123M,默认的最大堆空间为1799M 修改后    通过两次结果对比可以看出堆空间大小变化了; 修改前 修改前递归次数达到了9864次,抛出了栈内存溢出的

    2024年02月07日
    浏览(34)
  • kubernetes scheduler 源码解析及自定义资源调度算法实践

    小到运行着几十个工作负载的 kubernetes 集群,大到运行成千上万个工作负载 kubernetes 集群,每个工作负载到底应该在哪里运行,这需要一个聪明的大脑进行指挥,kubernetes scheduler 就是这个聪明的大脑。从结果看,他的工作很简单,只是为 pod.spec.nodeName 填充上一个 node 的名字而

    2023年04月24日
    浏览(34)
  • Kubernetes 集群上的部署JAVA 步骤

    一个基本的 Java 应用程序在 Kubernetes 集群上的部署步骤(使用命令行进行部署): 编写 Dockerfile 首先,在 Java 应用程序项目根目录下创建一个 Dockerfile 文件。假设你的 Java 项目是使用 Maven 进行构建的,那么你可以创建以下的 Dockerfile 文件: 在 Docker 中构建映像 在 Dockerfile 所

    2024年02月07日
    浏览(58)
  • Kubernetes技术--部署实际的java项目部署

    1.容器交付流程 (1).总体的流程如下所示: (2).k8s部署项目细节流程(详细过程) 2.java实际项目部署 (1).准备java项目,把项目打成jar包或者war包,这里需要依赖两个环境:jdk和maven环境。 使用mvn clean package进行打包,如下所示

    2024年02月10日
    浏览(33)
  • 【kubernetes】Java操作k8s-API

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 在K8s平台上,我们可以使用kubectl命令对Deployment、pod、Service等资源进行增删改查。本文章将提供一些Java代码操作API方式实现与集群交互,来创建、更新、删

    2024年04月13日
    浏览(32)
  • java贪心算法案例

    这个问题在我们的日常生活中就更加普遍了。假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元,至少要用多少张纸币?用贪心算法的思想,很显然,每一步尽可能用面值大的纸币即可。在日常生活中我们自然而然也是

    2024年02月16日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包