Kubernetes集群内创建具有kubectl命令行工具的容器

Kubernetes 集群中创建一个包含 kubectl 命令的 Pod 通常用于管理和调试集群本身。这种 Pod 通常被称为“调试 Pod”或“管理 Pod”,它们的主要作用是允许从集群内部执行 Kubernetes 操作和管理任务。这可以在多种情况下非常有用:

集群管理和维护

  • 内部访问:在集群内部运行的 Pod 可以直接访问 Kubernetes API,这对于执行需要内部访问的管理任务非常方便。
  • 权限隔离:这些 Pod 可以配置有不同的权限,从而限制对集群的访问,确保安全。

调试和故障排除

  • 内部视角调试:当需要从集群内部的角度调试问题时(例如,网络问题或服务之间的通信问题),这些 Pod 可以提供必要的工具。
  • 访问受限资源:在某些情况下,这些 Pod 可以访问通常对外部客户端不可见的内部资源或服务。

自动化和作业

  • 运行自动化任务:这些 Pod 可以用于自动执行诸如备份、集群状态检查或自动化部署等任务。
  • 作业和CronJobs:在 Kubernetes 中执行定时任务或一次性作业,这些 Pod 可以作为执行这些任务的一部分。

实际案例

  • 运行自动化任务:之前的项目中就遇到过一种情况,某个名字空间下的Pod由于代码长时间运行会卡主(当然卡主的本质原因是代码质量问题),且Pod不会自动重启,这种情况下就可以通过具有cluster-admin权限的CronJobs容器定时重启容易出问题的Pod,这样就可以极大的降低Pod卡主的概率。

Kubernetes集群中创建具有cluster-admin权限的容器

1.创建一个名字空间(创建名字空间的目的是为了更好的隔离资源)

kubeclt create ns kubectl-admin

2.创建ServiceAccount

apiVersion: v1
kind: ServiceAccount
metadata:name: admin-service-accountnamespace: kubectl-admin

3.为ServiceAccount做RBAC权限绑定,我这里绑定的是cluster-admin的权限,当然实际情况下可以控制权限的绑定

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: admin-role-binding
subjects:
- kind: ServiceAccountname: admin-service-accountnamespace: kubectl-admin
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io

4.创建一个Deployment,运行容器

apiVersion: apps/v1
kind: Deployment
metadata:name: kubectl-deploymentnamespace: kubectl
spec:replicas: 1selector:matchLabels:app: kubectl-apptemplate:metadata:labels:app: kubectl-appspec:serviceAccountName: admin-service-accountcontainers:- name: kubectl-containerimage: bitnami/kubectlcommand: ["tail", "-f", "/dev/null"]

5进入容器测试kubectl命令

kubectl exec -it kubectl-deployment-576894d47-m6rws -n kubectl-admin -- /bin/bash
I have no name!@kubectl-deployment-576894d47-m6rws:/$ kubectl get ns   
NAME               STATUS   AGE
cronjob            Active   58d
default            Active   183d
harbor             Active   50d
harbor-private     Active   57d
ingress-nginx      Active   50d
ingress-test       Active   50d
istio-system       Active   50d
kube-node-lease    Active   183d
kube-public        Active   183d
kube-system        Active   183d
kubectl            Active   47m
mysql              Active   4d9h
nginx-deployment   Active   116d
pg                 Active   16d
pgg                Active   10d
probe-test         Active   116d
rook-ceph          Active   41d
sonarqube          Active   84d
I have no name!@kubectl-deployment-576894d47-m6rws:/$ 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.21 汇编点亮STM32MP157小灯

.text .global _start _start: 时钟使能pb6 pf6 pe9LDR r0,0x50000A28LDR r1,[r0]ORR r1,r1,#(0x1<<4)ORR r1,r1,#(0x1<<5)ORR r1,r1,#(0x1<<1)STR r1,[r0]配置GPIO模式LDR r0,0x50006000LDR r1,[r0]BIC r1,r1,#(0x2<<20)ORR r1,r1,#(0x1<<20)B…

kubernetes集群应用 service进阶

kubernetes集群应用 Service进阶 一、场景 使用kubernetes集群运行工作负载时&#xff0c;由于Pod经常处于用后即焚状态&#xff0c;Pod对应的IP地址也会经常变化&#xff0c;因此我们不能直接访问Pod&#xff0c;可以通过Service对应的端点列表&#xff08;Endpoints&#x…

PaddleOCR Docker 容器快捷调用,快捷调用OCR API

文章目录 搞环境命令行测试Python调用测试转fastapi服务打包成镜像服务PaddleOCR 服务端模型总结&#xff0c;直接启动OCR服务 paddleOCR迎来大更新&#xff0c;搞一把新的api接口&#xff0c;直接用起来。 搞环境 搞容器&#xff1a; FROM nvidia/cuda:11.8.0-cudnn8-devel…

openlayers 截图

openlayers 截图 OK&#xff0c;我承认&#xff0c;这篇博文是一个水文。 最新做了一个功能&#xff0c;就是 openlayers 展示二维 GIS 数据后&#xff0c;可以把当前的视角导出图片。 直接写代码吧&#xff0c;没啥好说的&#xff1a; // 截图toImg() {if (this.map) {let ca…

【笔记】网络流算法模板

文章目录 EK求最大流题目描述输入格式输出格式数据范围 算法步骤算法时间复杂度 O ( n m 2 ) O(nm^2) O(nm2) AC CodeDinic/ISAP求最大流题目描述输入格式输出格式数据范围 算法步骤算法时间复杂度 O ( n 2 m ) O(n^2m) O(n2m) AC CodeDinic/ISAP求最小割EK求费用流题目描述输…

Python importlib模块详细教程

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com importlib模块是Python标准库中用于动态导入模块的工具。它提供了一系列函数&#xff0c;允许以编程方式加载、检查和操作模块。本文将深入探讨importlib的各种用法&#xff0c;并通过丰富的示例代码帮助你更好地…

华清作业day46

.text .global _start _start: led1 设置时钟使能 ldr r0,0x50000A28 ldr r1,[r0] orr r1,r1,#(0x1<<4) str r1,[r0]设置输出模式 ldr r0,0x50006000 ldr r1,[r0] bic r1,r1,#(0x3<<20) orr r1,r1,#(0x01<<20) str r1,[r0]设置推挽输出 ldr r0,0x5000600…

如何在Go中发起HTTP请求

引言 当一个程序需要与另一个程序通信时,许多开发人员会使用HTTP。Go的优势之一是其标准库的广度,HTTP也不例外。Go net/http包不仅支持[创建HTTP服务器],而且它还可以作为客户端进行HTTP请求。 在本教程中,您将创建一个程序,向HTTP服务器发出几种类型的HTTP请求。首先,…

在QT Creator下用CMake编译GEOS库

最近&#xff0c;想要在C下编一个可用GDAL模块的地图管理系统&#xff0c;找来找去&#xff0c;找到了GEOS。GEOS&#xff08;Geometry Engine-Open Source&#xff09;开源几何引擎 是一个用于计算几何的JTS库的 C/C实现&#xff0c;专注于地理信息系统 &#xff08;GIS&#…

obsidian + cloudreve 搭建个人云盘

obsidian 是什么&#xff1f;obsidian 是一款好用的笔记软件&#xff0c;拥有强大的第三方库&#xff0c;最重要的是支持WebDAV&#xff0c;可以自动同步笔记到云端服务器 cloudreve 是什么&#xff1f;cloudreve 是一款私人网盘系统&#xff0c;部署简单、界面简洁&#xff0…

11、Qt:创建/删除文件夹、拷贝文件

一、创建文件夹 声明&#xff1a; bool createPath(QString strPath); 定义&#xff1a; /** * brief MainWindow::CreatePath 创建文件夹 * param strPath 要创建的文件夹路径 * return 创建成功返回true&#xff0c;失败返回false */ bool MainWindow::createPath(QString s…

一篇文章概括!状态码分别是什么意思?

hello,我是小索奇&#xff0c;HTTP状态码被分为几个类别&#xff0c;每个类别代表着不同类型的响应。这里是100到500之间的状态码的大致含义&#xff1a; 1xx (信息性状态码) 100 Continue: 客户端应继续其请求。101 Switching Protocols: 请求者已要求服务器切换协议&#x…

速通Python基础语法--语句篇

缩进和代码块 一 条件语句if/elif if的基本语法 示例 条件语句嵌套 练习1 练习2 二 空语句 三 while循环 示例 打印1-10 求1-100的和 求5! 求1-5的阶乘之和 四 for循环 for的基本语法 1~range[ ,) 五 continue/break continue:结束当前循环,继续下一次循环 break:结束整个循…

《每天一分钟学习C语言·四》文本读写操作及二进制读写

fopen(参数1,参数2)&#xff0c;第一个参数是要打开的文件名&#xff0c;文件名字符串&#xff0c;第二个参数用于制定文件打开模式的一个字符串。 注&#xff1a;如果要打开某个盘的文本如F盘test文件夹下的test.txt文本&#xff0c;则fopen(“F:\test\test.txt”,”r”); 程序…

AcWing算法进阶课-1.1.2Dinic/ISAP求最大流

算法进阶课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个包含 n n n 个点 m m m 条边的有向图&#xff0c;并给定每条边的容量&#xff0c;边的容量非负。 图中可能存在重边和自环。求从点 S S S 到点 T T T 的最大流。 输入格式 第一行包…

本地websocket服务端结合cpolar内网穿透实现公网访问

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…

黑马头条--day07--app文章搜索

目录 一.安装elasticsearch 1.拉取镜像 2.创建存放数据及配置文件的文件夹&#xff0c;启动时挂载。 4.修改文件夹权限 5.启动容器 5.1参数解释 6.安装ik分词器 6.2测试一下Ik分词器 二.添加文章索引库 1查询所有的文章信息&#xff0c;批量导入到es索引库中 2)测试 …

深度盘点:除了BRC20外 这些公链潜力铭文也值得关注

近日的铭文市场风起云涌&#xff0c;除BRC20占据着市场70%以上的份额外&#xff0c;其他公链的铭文也在快速发展

Spring Boot + EasyUI 全屏布局(二)

一、创建一个Spring Boot EasyUI项目 Spring Boot EasyUI 创建第一个项目&#xff08;一&#xff09;_springboot整合easyui-CSDN博客 二、相关知识点总结 布局&#xff08;layout&#xff09;是有五个区域&#xff08;北区 north、南区 south、东区 east、西区 west 和中区…

C++ 如何使用对二维vector进行读和写

要使用二维vector进行读和写&#xff0c;可以通过两层循环来遍历每个元素。下面是一个简单的示例代码&#xff1a; #include <iostream> #include <vector>int main() {// 创建一个二维vectorstd::vector<std::vector<int>> matrix {{1, 2, 3},{4, 5…