k8s debug 浅谈

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

一   k8s debug 浅谈

说明: 本文只是基于对'kubectl debug'浅显认识总结的知识点,后续'实际使用'再补充案例

Kubernetes 官方出品调试工具上手指南(无需安装,开箱即用)

debug-application

简化 Pod 故障诊断: kubectl-debug 介绍

1.18 版本之前需要自己安装kubectl debug     下载位置    debug_0.1.1_linux_amd64.tar.gz

①  低版本安装kubectl-debug工具

# linux x86_64

export PLUGIN_VERSION=0.1.1

mv  debug_${PLUGIN_VERSION}_linux_amd64.tar.gz kubectl-debug.tar.gz

tar -zxvf kubectl-debug.tar.gz kubectl-debug

mv kubectl-debug /usr/local/bin/

机制: 关于为什么安装kubectl-debug,但是却可以使用'kubectl debug'命令参考'plugin的'机制

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

+++++++++++++  "推荐下面的方式,而不是plugin插件的方式"  +++++++++++++

1、在 'v1.23 及以上'版本中,该功能'默认'开启

2、针对 '1.23 以下'的 K8S 版本,需要通过'以下'方式,'手动'开启

 1) '控制面' 开启 EphemeralContainers featureGate

 2) 进入 'master' 节点,编辑 /etc/kubernetes/manifests/ 下的 

  kube-apiserver.yaml、kube-controller-manager.yaml、kube-scheduler.yaml

  备注: 实际'操作'只修改kube-apiserver.yaml即可

 3) 在 command 部分添加 - --feature-gates=EphemeralContainers=true

 4) kubelet 服务开启该功能

 5) 在节点上'编辑' /var/lib/kubelet/kubeadm-flags.env

   添加 --feature-gates=EphemeralContainers=true

   或者设置KUBELET_EXTRA_ARGS="--feature-gates=EphemeralContainers=true"#

 6) 重启 kubelet:

   systemctl restart kubelet

细节: v1.18.4 '版本中' 必须使用 kubectl 'alpha' debug

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生 

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

 ②  临时容器

1、 EphemeralContainer '临时容器'

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

Debugging using a copy of the Pod

③   debug的背景

1、kubectl是 k8s 管理员的日常工具,当'调试'或'排查 pod'问题时

2、一般情况使用 'logs'、describe、exec '子命令'便可以找到'问题'原因

java 排错  --> 镜像如果没有'提供相关'的工具,怎么排错呢? --> 'gcc 日志'分析、jvm性能分析

补充: 容器所在节点'执行nsenter',查看pod或容器  ps: 不一定有'worker节点的登陆权限'

​思考: 哪些场景'不满足'驱使我们使用'kubectl debug'

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

--feature-gates="EphemeralContainers=true"

④   kubectl debug原理

kubectl debug 调试运行中的pod

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

1、内置的 kubectl debug 命令其实很'简单'

2、通过 '--target' 参数指定'Pod中的哪个容器',给'正在运行中的 Pod' 增加一个'临时'容器

备注: 默认是'主'容器,'第一个',也即'业务容器'

补充:--image参数就是用于指定使用'哪个镜像来debug',这个镜像包含我们'常使用的工具'即可

3、'共享进程命名空间',容器文件系统通过 '/proc/$pid/root' 链接对 pod 中的'其他容器'可见

++++++++++++  "分割线"  ++++++++++++

运行 debug 命令, 把'日志级别'设置为 10 ,查看创建 debug 容器的'过程':

kubectl run ephemeral-demo --image=pause:3.5 --restart=Never

kubectl -v=10 debug -it ephemeral --image=busybox:1.33.1 --target=temp_demo  

GET 获取 pod -> 'PATCH' 增加临时容器 -> 'GET' 获取临时容器 -> 'POST' 进入临时容器

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

kubeadm 安装的集群如何启动 kubectl debug 调试容器

1、当'debug'连接到Pod后,使用 'chroot /host' 突破 chroot,并完全'进入'主机

2、可以获取到'节点完全的权限',查看到节点所有的文件,甚至'重启节点'

二   如何启动临时容器

①  已经运行k8s集群中开启临时容器

需求: 在kubeadm 安装的'已经运行'的 Kubernetes 集群中开启'临时容器'功能

1、/etc/kubernetes/manifests/kube-apiserver.yaml

添加 'EphemeralContainers=true' 开启'临时容器'功能,如下'所示'

- --feature-gates=DynamicKubeletConfig=true,EphemeralContainers=true

备注: 如果要开启'多个特性'门控功能用 ',' 隔开

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

②  集群初始化的时候开启临时容器功能

说明: 如果想在'初始化' Kubernetes 集群时'开启'临时容器功能,则修改 'kubeadm' 配置文件

# init.yaml 
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.19.3
apiServer:
  extraArgs:
    feature-gates: EphemeralContainers=true

然后通过 'kubeadm init' 初始化 Kubernetes 集群:

kubeadm init --config init.yaml

③  验证

1、随着集群的运行,我们需要'验证其有效性'

2、最简单方法是检查 'Pod API',它现在应该包含'临时容器'部分以及通常容器

kubectl explain pod.spec.ephemeralContainers

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

④  容器进程共享 

k8s debug 浅谈,kubernetes学习笔记,kubernetes,容器,云原生

share-process-namespace

ephemeral-containers

feature-gates

1、验证 Pod 中是否允许'进程共享',那么可以运行:

kubectl get pod pod_name -o json  | jq .spec.shareProcessNamespace --> 'true'

⑤  docker 逃逸方法汇总文章来源地址https://www.toymoban.com/news/detail-758178.html

容器逃逸: 避免'忘记'密码,'重启'服务器  --> 弄一个备用'紧急的逃生'通路

引申: 镜像是否做过'安全'扫描

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

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

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

相关文章

  • 云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)

    目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd)  5.master2节点迁移容器运行时(docker → containerd)  6.node1节点容器运行时迁移(docker → containerd)  7.升级集群计划(v1.23.14 → v1.24.1) 8.升级master1节点版本(v1.24.1) 9.升级master2节点版本

    2024年02月03日
    浏览(47)
  • 云上攻防-云原生篇&;Kubernetes&;K8s安全&;API&;Kubelet未授权访问&;容器执行

    curl -XPOST -k “https://192.168.139.132:10250/run///” -d “cmd=id” 执行的命令是test03容器里的命令,需要进行容器逃逸。 1、攻击8080端口:API Server(Master)未授权访问 旧版本的k8s的API Server默认会开启两个端口:8080和6443。 6443是安全端口,安全端口使用TLS加密;但是8080端口无需认证,

    2024年04月22日
    浏览(52)
  • 01-k8s学习笔记之认识 Kubernetes

    应用部署的三大阶段 k8s 的特点 Apache Mesos Docker Swarm Google Kubernetes

    2024年01月16日
    浏览(48)
  • 云原生 黑马Kubernetes教程(K8S教程)笔记——第一章 kubernetes介绍——Master集群控制节点、Node工作负载节点、Pod控制单元

    参考文章:kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为

    2024年02月04日
    浏览(39)
  • 云原生Kubernetes:K8S概述

    目录 一、理论 1.云原生 2.K8S 3.k8s集群架构与组件 4.K8S网络 二、总结 (1)概念 云原生是一种基于容器、微服务和自动化运维的软件开发和部署方法。它可以使应用程序更加高效、可靠和可扩展,适用于各种不同的云平台。 如果要更直接通俗的来解释下上面的概念,云原生更

    2024年02月10日
    浏览(40)
  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍

    目录 一、Kubernetes 简介 二、Kubernetes 架构 三、Kunbernetes 有哪些核心概念? 1. 集群 Cluster 2. 容器 Container 3. POD 4. 副本集 ReplicaSet 5. 服务 service 6. 发布 Deployment 7. ConfigMap/Secret 8. DaemonSet 9. 核心概念总结 Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌。谷歌早在十几

    2024年02月03日
    浏览(64)
  • 【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务

    目录 一、认识 Kubernetes 网络 二、外部网络如何访问 k8s 内部服务 1. NodePort 2. Load Balancer 3. Ingress Kubernetes 最底层的网络为节点网络,用来保证 k8s 集群的节点(master 和 worker、worker 节点之间)能够做正常的 IP 寻址和通讯。 Kubernetes 第二层网络就是 Pod 网络,构建于节点网络之上

    2024年01月16日
    浏览(42)
  • 云原生_kubernetes(k8s)介绍

    目录 一、应用部署方式演变 二、k8s介绍 三、k8s的组件 四、k8s中的概念 五、k8s资源管理方式 1、命令式对象管理 2、命令式对象配置 3、声明式对象配置 在部署应用程序的方式上,主要经历了三个时代: 1 、物理机部署: 互联网早期,会直接将应用程序部署在物理机上 优点

    2023年04月13日
    浏览(38)
  • 云原生Kubernetes:K8S安全机制

    目录 一、理论 1.K8S安全机制 2.Authentication认证 3.Authorization授权 4.Admission Control准入控制 5.User访问案例 6.ServiceAccount访问案例 二、实验 1.Admission Control准入控制 2.User访问案例 3.ServiceAccount访问案例 三、问题 1.生成资源报错 2.镜像拉取失败 四、总结 (1)概念 Kubernetes 作为一个分

    2024年02月07日
    浏览(45)
  • 云原生Kubernetes:K8S存储卷

    目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验  1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享目录 3.静态创建pv 报错 4.使用 Deployment 来创建

    2024年02月07日
    浏览(45)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包