如何优雅地停止单节点 kubernetes 集群

2024-02-08

我已经根据[官方教程][1]设置了单节点kubernetes。

除了官方文档之外,我还设置了单节点集群:

kubectl taint nodes --all node-role.kubernetes.io/master-

残疾人驱逐限制:

cat << EOF >> /var/lib/kubelet/config.yaml
evictionHard:
  imagefs.available: 1%
  memory.available: 100Mi
  nodefs.available: 1%
  nodefs.inodesFree: 1%
EOF

systemctl daemon-reload
systemctl restart kubelet

并为 Docker 设置 systemd 驱动程序:

cat << EOF > /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

systemctl daemon-reload
systemctl restart docker

如何暂时停止 Kubernetes 集群(包括所有服务、podd 等)?我已发出systemctl stop kubelet但我仍然在进程中看到一些 kubernetes 的东西

$ ps -elf | grep kube
4 S root       6032   5914  1  80   0 - 2653148 -    Feb17 ?        00:35:10 etcd --advertise-client-urls=https://192.168.1.111:2379 --cert-file=/etc/kubernetes/pki/etcd/server.crt --client-cert-auth=true --data-dir=/var/lib/etcd --initial-advertise-peer-urls=https://192.168.1.111:2380 --initial-cluster=ubuntu=https://192.168.1.111:2380 --key-file=/etc/kubernetes/pki/etcd/server.key --listen-client-urls=https://127.0.0.1:2379,https://192.168.1.111:2379 --listen-metrics-urls=http://127.0.0.1:2381 --listen-peer-urls=https://192.168.1.111:2380 --name=ubuntu --peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt --peer-client-cert-auth=true --peer-key-file=/etc/kubernetes/pki/etcd/peer.key --peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt --snapshot-count=10000 --trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt
4 S root       7536   7495  0  80   0 - 35026 -      Feb17 ?        00:01:04 /usr/local/bin/kube-proxy --config=/var/lib/kube-proxy/config.conf --hostname-override=ubuntu
4 S root       9868   9839  0  80   0 - 34463 -      Feb17 ?        00:00:59 /usr/bin/kube-controllers
4 S root      48394  48375  2  80   0 - 36076 -      13:41 ?        00:01:09 kube-scheduler --authentication-kubeconfig=/etc/kubernetes/scheduler.conf --authorization-kubeconfig=/etc/kubernetes/scheduler.conf --bind-address=127.0.0.1 --kubeconfig=/etc/kubernetes/scheduler.conf --leader-elect=true
4 S root      48461  48436  3  80   0 - 52484 -      13:41 ?        00:01:53 kube-controller-manager --allocate-node-cidrs=true --authentication-kubeconfig=/etc/kubernetes/controller-manager.conf --authorization-kubeconfig=/etc/kubernetes/controller-manager.conf --bind-address=127.0.0.1 --client-ca-file=/etc/kubernetes/pki/ca.crt --cluster-cidr=10.244.0.0/16 --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt --cluster-signing-key-file=/etc/kubernetes/pki/ca.key --controllers=*,bootstrapsigner,tokencleaner --kubeconfig=/etc/kubernetes/controller-manager.conf --leader-elect=true --node-cidr-mask-size=24 --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt --root-ca-file=/etc/kubernetes/pki/ca.crt --service-account-private-key-file=/etc/kubernetes/pki/sa.key --service-cluster-ip-range=10.96.0.0/12 --use-service-account-credentials=true
4 S root      52675  52586  7  80   0 - 123895 -     14:00 ?        00:02:01 kube-apiserver --advertise-address=192.168.1.111 --allow-privileged=true --authorization-mode=Node,RBAC --client-ca-file=/etc/kubernetes/pki/ca.crt --enable-admission-plugins=NodeRestriction --enable-bootstrap-token-auth=true --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key --etcd-servers=https://127.0.0.1:2379 --insecure-port=0 --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key --requestheader-allowed-names=front-proxy-client --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt --requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group --requestheader-username-headers=X-Remote-User --secure-port=6443 --service-account-key-file=/etc/kubernetes/pki/sa.pub --service-cluster-ip-range=10.96.0.0/12 --tls-cert-file=/etc/kubernetes/pki/apiserver.crt --tls-private-key-file=/etc/kubernetes/pki/apiserver.key

如果你真的想出于某种原因停止 kubernetes/docker 运行的所有内容 - 你可以停止 kubelet 和 docker。

在您想要停止 kubernetes/docker 的节点上执行这些命令

systemctl stop kubelet 
systemctl stop docker

我强烈建议首先排空节点,但如果您只是想在不小心的情况下杀死所有内容,那么这将是停止 kubernetes 和节点上正在运行的容器的一种方法:)

一旦你想重新启动一切,只需再次启动 docker 和 kubelet 或重新启动机器即可。

cheers

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何优雅地停止单节点 kubernetes 集群 的相关文章

随机推荐

  • 安全注意事项 - ChromeDriver - Chrome 的 Webdriver

    我想知道是否有人了解有关此声明所涉及的使用 chromedriver 的具体风险的更多信息 如果可能 请使用无法访问敏感本地或网络数据的测试帐户运行 ChromeDriver ChromeDriver 永远不应该使用特权帐户运行 想知道使用
  • 如何开始使用 Delphi 创建我自己的类?

    我已经发布一个问题 https stackoverflow com questions 11270972 declare locally or globally in delphi几天前 答案告诉我创建自己的课程 我是一名来自 OOP 时代
  • 在 Rust 中确定 DynamicImage 的位深度

    如何确定一个位深度image DynamicImage生锈了 我在用着fltk rs https docs rs fltk 0 11 6 fltk function https docs rs fltk 0 11 6 fltk image
  • javascript中双精度到字节数组的转换

    我正在尝试将一些 Java 代码转换为我正在开发的应用程序所需的 JavaScript 我被困在一个类及其方法上 这些方法将 double 类型的变量转换为 long 然后将 long 转换为由表示该 long 数字的 8 个字节组成的字节
  • 为什么不总是使用 GUID 而不是整数 ID?

    使用 GUID 有哪些缺点 为什么不总是默认使用它们呢 其一 整数的连接速度要快得多 当处理数百万行时 这一点尤其重要 对于两个来说 GUID 比整数占用更多的空间 同样 在处理数百万行时非常重要 对于三个来说 GUID 有时采用不同的格式
  • AVI 文件的 Flash 视频播放器(免费用于商业用途)

    是否有可免费用于商业用途且能够播放 AVI 文件的 Flash 视频播放器 JW Player 是不可能的 因为在自述文件中它指出公司的使用被视为商业用途 需要不同的许可证 Flash 本身并不处理 AVI 容器格式 它只能播放符合某些特定
  • 如何在 Flutter 移动应用程序的 API 调用中传递基本身份验证凭据?

    我正在开发一个简单的 Flutter 移动应用程序 需要调用使用基本身份验证的 API 我可以使用电子邮件和密码凭证来访问 Postman 中的 API 它会在执行请求之前以 Base64 格式对电子邮件和密码进行编码 我假设用 分隔 我不
  • 为什么我的 RSS 源会重复某些条目?

    当使用 Thunderbird 提要阅读器阅读我的 RSS 提要时 某些条目是重复的 谷歌读者 https en wikipedia org wiki Google Reader没有同样的问题 这是错误的 feed http plcoder
  • Oracle 中的视图和物化视图有什么区别?

    Oracle 中的视图和物化视图有什么区别 物化视图基于磁盘 并根据查询定义定期更新 视图只是虚拟的 每次访问时都会运行查询定义
  • 获取对象类型并相应地分配值

    我有一个数组列表不同类型的值其中 第一个值 gt string 第二个值 gt datetime 第三个值 gt boolean第四个值是int 我如何找到它们的类型并相应地分配值 任何帮助将不胜感激 这是我的代码 foreach obje
  • 有没有办法将类作为参数传递给 JAXB XMLAdapter 或从另一个类访问 Getter 方法

    我正在尝试创建一个XMLAdapter我的一个对象的类 我需要访问Getters来自另一个类 以便可以从该类的 Getters 填充某些对象 但我无法这样做 基本上 我想访问我的Child class Getter内的方法XMLAdapte
  • 测试文件/目录是否只读

    好吧 我是一个 C 新手 如何测试一个文件在 Windows 上是否只读 我尝试使用 GetFileAttributes 函数进行一些操作 但无济于事 给定文件的路径 测试它是否只读的正确方法是什么 Edit 所以我现在还停留在这一点上 我
  • 如何在Flutter中绘制带有尖角三角形的线?

    我正在考虑实施以下设计 如何实现如上图所示的线上的三角形凹凸 我是颤振的新手 对如何开始这方面一无所知 很简单 你只需要了解如何使用剪刀即可 方法如下 你需要使用ClipPath override Widget build BuildCon
  • AngularJS 两个 http get 在一个控制器中会出现问题

    我在一个控制器中有两个 http GET 有时它可以工作 并且其中两个正在工作 有时只有一个 http Get 可以工作 有时它们都没有显示 有什么建议么 controller nextSidorAdminCtrl function sco
  • Firebase 数据库安全,无需 Firebase 身份验证

    我在 Play 商店上发布了一个应用程序 我想在该应用程序中实现 firebase 我已阅读所有文档 但有两个疑问 如果有人在我的应用程序中使用 apk 反编译器并获取 google services json 他们可以对数据库做任何他们想
  • 如何将 CKFinder 与 Laravel 集成?

    我正在尝试将 CKFinder 与 Laravel 集成 我已经完成了 95 左右 我可以让一切正常工作 除了CheckAuthentication功能 我必须做到return true无论上传是否有效 我尝试做的是在 config php
  • 如何获取按计数列排序的组

    很难用简单的英语问这个问题 所以我会展示我正在尝试做的事情 这是我的 SQL 代码 select top 100 Name COUNT Name as total from ActivityLog where Timestamp betwe
  • 如何预加载 .net 程序集

    在我的工作中 我们正在使用 net Framework 4开发不同的应用程序 所有应用程序都使用我们开发的通用程序集 例如data dll中的数据层 这些应用程序驻留在网络驱动器上并直接从那里启动 大多数大型应用程序第一次启动 冷启动 需要
  • 在python中将数字表示为二的幂之和的最快方法是什么

    例如 gt gt gt two powers 42 gt gt gt 2 8 32 我目前的幼稚实现 取自here https stackoverflow com a 27936818 1177288 看起来像那样 def two powe
  • 如何优雅地停止单节点 kubernetes 集群

    我已经根据 官方教程 1 设置了单节点kubernetes 除了官方文档之外 我还设置了单节点集群 kubectl taint nodes all node role kubernetes io master 残疾人驱逐限制 cat lt