当前位置: 首页 > news >正文

kubectl 和 kubeconfig 基本原理

云原生学习路线导航页(持续更新中)

  • kubernetes学习系列 快捷连接
    • Kubernetes架构原则和对象设计(一)

本文介绍kubectl的几个常用命令,kubconfig文件基本属性,并开启kubectl debug日志分析其背后基本原理

  • 结论写在前面:
    • kubectl就是一个和kube-apiserver交互的命令行工具,通过将命令转换成对应的get、delete等请求发送给api-server,实现与kubernetes的交互
    • kubeconfig文件为kubectl提供集群地址、集群鉴权cert、token等信息

1.kubectl 做了什么

在这里插入图片描述

  • 执行kubectl命令的时候,添加 -v 9,即可开启debug日志,可以看到kubectl到底干了什么
    • 可以看到,kubectl命令首先加载了 /root/.kube/config 文件,获取到了当前要连接的集群信息,及user认证信息cert、key
    • 然后向apiserver发送get请求
      在这里插入图片描述

2.kubeconfig 内容解释

  • kubectl从其中获取当前正在使用的上下文,并使用 该上下文中 指定的user 连接 指定的cluster
  • kubeconfig 默认路径:/root/.kube/config,当然你可以通过设置 KUBECONFIG 环境变量或者设置 --kubeconfig参数来指定其他 kubeconfig 文件
  • 官方文档:https://kubernetes.io/zh-cn/docs/concepts/configuration/organize-cluster-access-kubeconfig/
    在这里插入图片描述

3.kubectl get 命令

在这里插入图片描述

  • 使用-oyaml和-w实时查看 default ns 的yaml变化
    [root@VM-226-235-tencentos ~]# kubectl get ns default -oyaml -w
    apiVersion: v1
    kind: Namespace
    metadata:creationTimestamp: "2024-04-17T08:00:47Z"name: defaultresourceVersion: "146"selfLink: /api/v1/namespaces/defaultuid: da7c3a89-3ac2-411b-a7fa-f985f5fb24ec
    spec:finalizers:- kubernetes
    status:phase: Active
  • 开启kubectl debug日志,可以看出
    • kubectl会首先发送get请求,获取default ns的yaml
    • 然后又发送了一次get请求,不过这个get请求的watch参数置为了true,和apiserver建立了一个长连接
      • 当ns有变化的时候,apiserver就会把事件推送过来,我们的控制台就可以打印最新ns的yaml了
    [root@VM-226-235-tencentos ~]# kubectl get ns default -oyaml -w -v 9
    I1207 17:13:12.017346    6316 loader.go:375] Config loaded from file:  /root/.kube/config
    ...... 
    I1207 17:13:12.057355    6316 round_trippers.go:424] curl -k -v -XGET  -H "Accept: application/json" -H "User-Agent: kubectl/v1.19.16 (linux/amd64) kubernetes/e37e4ab" 'https://9.135.226.235:6443/api/v1/namespaces/default'
    I1207 17:13:12.059146    6316 round_trippers.go:444] GET https://9.135.226.235:6443/api/v1/namespaces/default 200 OK in 1 milliseconds
    I1207 17:13:12.059162    6316 round_trippers.go:450] Response Headers:
    I1207 17:13:12.059166    6316 round_trippers.go:453]     Cache-Control: no-cache, private
    I1207 17:13:12.059175    6316 round_trippers.go:453]     Content-Type: application/json
    I1207 17:13:12.059181    6316 round_trippers.go:453]     Content-Length: 286
    I1207 17:13:12.059194    6316 round_trippers.go:453]     Date: Sat, 07 Dec 2024 09:13:12 GMT
    I1207 17:13:12.059222    6316 request.go:1097] Response Body: {"kind":"Namespace","apiVersion":"v1","metadata":{"name":"default","selfLink":"/api/v1/namespaces/default","uid":"da7c3a89-3ac2-411b-a7fa-f985f5fb24ec","resourceVersion":"146","creationTimestamp":"2024-04-17T08:00:47Z"},"spec":{"finalizers":["kubernetes"]},"status":{"phase":"Active"}}
    I1207 17:13:12.059373    6316 table_printer.go:45] Unable to decode server response into a Table. Falling back to hardcoded types: attempt to decode non-Table object
    apiVersion: v1
    kind: Namespace
    metadata:creationTimestamp: "2024-04-17T08:00:47Z"name: defaultresourceVersion: "146"selfLink: /api/v1/namespaces/defaultuid: da7c3a89-3ac2-411b-a7fa-f985f5fb24ec
    spec:finalizers:- kubernetes
    status:phase: Active
    I1207 17:13:12.059734    6316 round_trippers.go:424] curl -k -v -XGET  -H "Accept: application/json" -H "User-Agent: kubectl/v1.19.16 (linux/amd64) kubernetes/e37e4ab" 'https://9.135.226.235:6443/api/v1/namespaces?fieldSelector=metadata.name%3Ddefault&resourceVersion=0&watch=true'
    I1207 17:13:12.060448    6316 round_trippers.go:444] GET https://9.135.226.235:6443/api/v1/namespaces?fieldSelector=metadata.name%3Ddefault&resourceVersion=0&watch=true 200 OK in 0 milliseconds
    I1207 17:13:12.060474    6316 round_trippers.go:450] Response Headers:
    I1207 17:13:12.060481    6316 round_trippers.go:453]     Content-Type: application/json
    I1207 17:13:12.060493    6316 round_trippers.go:453]     Date: Sat, 07 Dec 2024 09:13:12 GMT
    I1207 17:13:12.060506    6316 round_trippers.go:453]     Cache-Control: no-cache, private
    I1207 17:13:12.060780    6316 table_printer.go:45] Unable to decode server response into a Table. Falling back to hardcoded types: attempt to decode non-Table object
    
  • 为default ns添加label,长连接查看输出
    在这里插入图片描述

4.kubectl describe 命令

  • 最重要的用途是 查看event,用于问题排查

5.kubectl exec 进入容器

在这里插入图片描述

  • kubectl exec -it pod-xxx -n ns-xxx -- bash
    • -- :前面是指令,后面是在容器中执行的命令【非必须,但建议写,语义更明确】
    • bash:执行容器的bash命令,会进入容器的bash命令行,可以做一些debug操作
  • 比如也可以直接使用 – 指定查看容器内文件
    • kubectl exec -it pod-xxx -n ns-xxx -- tail -f /var/app.log

6.kubectl logs 命令

  • kubectl logs 查看的是标准输出日志
    • kubectl logs pod-xxx -n ns-xxx:查看pod 标准输出日志,使用-f参数可以实时输出
    • kubectl logs pod-xxx -n ns-xxx | head -n 10:查看pod前10行 标准输出日志
    • kubectl logs pod-xxx -n ns-xxx | grep "user-xxxx":检索 标准输出日志 中指定关键字
  • 如果你的应用会把日志写入到某个指定路径下,可以使用exec查看容器的指定文件
    • kubectl exec -it pod-xxx -n ns-xxx -- tail -f /var/app.log

相关文章:

kubectl 和 kubeconfig 基本原理

云原生学习路线导航页(持续更新中) kubernetes学习系列 快捷连接 Kubernetes架构原则和对象设计(一) 本文介绍kubectl的几个常用命令,kubconfig文件基本属性,并开启kubectl debug日志分析其背后基本原理 …...

LVGL笔录----动画

最近在搞LVGL动画内容,发现网上能参考的资源太少了。现将自己学习到的内容做个笔录,仅供自己记录,若对你有帮助,那么最好不过,共勉! 首先,我是在CodeBlock上仿真 #define PI 3.14159265359stat…...

【LeetCode热题100】BFS解决FloodFill算法

这篇博客主要记录了使用BFS解决FloodFill算法的几道题目&#xff0c;包括图像渲染、岛屿数量、岛屿的最大面积、被包围的区域。 class Solution {using PII pair<int, int>; public:vector<vector<int>> floodFill(vector<vector<int>>& im…...

设计模式の软件设计原则

文章目录 前言一、聚合&组合&继承&依赖1.1、继承1.2、组合1.3、聚合1.4、依赖 二、单一职责原则2.1、单一职责原则反面案例2.2、单一职责原则反面案例的改进 三、接口隔离原则3.1、接口隔离原则反面案例3.2、接口隔离原则反面案例的改进 四、依赖倒转原则4.1、依赖…...

Linux centos7 下载MySQL5.7仓库的命令

wget 是一个非常强大的命令行工具&#xff0c;用于从网络上下载文件。它是 Linux 和其他 Unix-like 系统中常用的工具之一。wget 命令的各个参数有着不同的含义&#xff0c;下面是您提供的命令 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.onarch.r…...

CSS flex布局踩坑小记:flex-basis属性之0px与0%的差异 (赞)

原文出处&#xff1a;CSS flex布局踩坑小记&#xff1a;flex-basis属性之0px与0%的差异_flex-basis 0%-CSDN博客 讲述flex容器被撑大的原因(误用&#xff1a;flex-basis: 0%;)及解决方法(用&#xff1a;flex-basis: 0px;)...

华硕主板不能开启

正常流程&#xff1a; [主機板]BIOS如何設置主機板整合圖形(內顯)和獨立顯示卡同時顯示輸出 | 官方支援 | ASUS 台灣 如果开启了CSR兼容性模式&#xff0c;在BIOS里面&#xff0c;就必须关掉&#xff0c;才能支持多显示器&#xff0c;如下图显示的标识才会出现。...

室联人形机器人:家政服务任务结构化、技术要点、深入应用FPGA的控制系统框架设计(整合版)

目录&#xff1a; 0 引言 1 人形机器人对室内家政服务任务的结构化 1.1人形机器人在室内家政服务中的比较优势 1.1.1 人形机器人拟人性的7个维度 1.1.2 拟人性在室内家政服务工作中的比较优势 1.1.3 潜在的重要用户&#xff1a;宠物爱好者 1.2 居所室内环境的特征与结构…...

OpenAI 发布 o1 LLM,推出 ChatGPT Pro

OpenAI正式发布了专为复杂推理而构建的 OpenAI o1大型语言模型(LLM)。 该公司还推出了 ChatGPT Pro&#xff0c;这是一项每月 200 美元的套餐&#xff0c;包括无限制访问 OpenAI o1、o1-mini、GPT-4o 和高级语音对话。 OpenAI o1 从 9 月 12 日起在 ChatGPT 中推出预览版&…...

【MySQL】存储过程和触发器

MySQL存储过程和触发器 一、存储过程的介绍二、存储过程的相关操作2.1创建存储过程2.2查看存储过程2.4调用存储过程2.5删除存储过程 三、变量3.1系统变量3.2用户定义变量3.3局部变量 四、存储过程中的关键字4.1 if4.2参数4.3case4.4 while4.5repeat4.6 loop4.7游标4.8条件处理程…...

QT4和 QT5 槽函数连接的区别

正常连接方式 //QT4官方用列QLabel *label new QLabel;QScrollBar *scrollBar new QScrollBar;QObject::connect(scrollBar, SIGNAL(valueChanged(int)),label, SLOT(setNum(int)));//QT5官方用列QLabel *label new QLabel;QLineEdit *lineEdit new QLineEdit;QObject::c…...

使用 PyTorch 和 Horovod 来编写一个简单的分布式训练 demo

使用 PyTorch 和 Horovod 来编写一个简单的分布式训练 demo&#xff0c;可以帮助你理解如何在多GPU或多节点环境中高效地训练深度学习模型。Horovod 是 Uber 开发的一个用于分布式训练的框架&#xff0c;它支持 TensorFlow、Keras、PyTorch 等多个机器学习库。下面是一个基于 P…...

SQL复杂查询功能介绍及示例

文章目录 1. 多表连接&#xff08;JOIN&#xff09;功能介绍应用场景示例查询及初始表格customers 表&#xff08;未查询前&#xff09;orders 表&#xff08;未查询前&#xff09;INNER JOIN 示例LEFT JOIN 示例 2. 子查询&#xff08;Subquery&#xff09;功能介绍应用场景示…...

shell基础用法

shell基础知识 shell中的多行注释 :<<EOF read echo $REPLY # read不指定变量&#xff0c;则默认写入$REPLY EOF # :<<EOF ...EOF 多行注释&#xff0c;EOF可以替换为&#xff01;# 等文件目录和执行目录 echo $0$0 # ./demo.sh echo $0的realpath$(realpath…...

C#设计模式--策略模式(Strategy Pattern)

策略模式是一种行为设计模式&#xff0c;它使你能在运行时改变对象的行为。在策略模式定义了一系列算法或策略&#xff0c;并将每个算法封装在独立的类中&#xff0c;使得它们可以互相替换。通过使用策略模式&#xff0c;可以在运行时根据需要选择不同的算法&#xff0c;而不需…...

【opencv入门教程】15. 访问像素的十四种方式

文章选自&#xff1a; 一、像素访问 一张图片由许多个点组成&#xff0c;每个点就是一个像素&#xff0c;每个像素包含不同的值&#xff0c;对图像像素操作是图像处理过程中常使用的 二、访问像素 void Samples::AccessPixels1(Mat &image, int div 64) {int nl imag…...

【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)

导航&#xff1a; 本文一些内容需要聚簇索引、非聚簇索引、B树、覆盖索引、索引下推等前置概念&#xff0c;虽然本文有简单回顾&#xff0c;但详细可以参考下文的【MySQL高级篇】 【Java笔记踩坑汇总】Java基础JavaWebSSMSpringBootSpringCloud瑞吉外卖/谷粒商城/学成在线设计模…...

根据html的段落长度设置QtextBrowser的显示内容,最少显示一个段落

要根据 HTML 段落的长度设置 QTextBrowser 的显示内容&#xff0c;并确保至少显示一个段落&#xff0c;可以通过以下步骤来实现&#xff1a; 加载 HTML 内容&#xff1a;首先&#xff0c;你需要加载 HTML 内容到 QTextBrowser 中。可以通过 setHtml() 方法来设置 HTML。 计算段…...

基于Huffman编码的GPS定位数据无损压缩算法

目录 一、引言 二、霍夫曼编码 三、经典Huffman编码 四、适应性Huffman编码 五、GPS定位数据压缩 提示&#xff1a;文末附定位数据压缩工具和源码 一、引言 车载监控系统中&#xff0c;车载终端需要获取GPS信号&#xff08;经度、纬 度、速度、方向等&#xff09;实时上传…...

php:完整部署Grid++Report到php项目,并实现模板打印

一、下载Grid++Report软件 路径:开发者安装包下载 - 锐浪报表工具 二、 安装软件 1、对下载的压缩包运行内部的exe文件 2、选择语言 3、 完成安装引导 下一步即可 4、接收许可协议 点击“我接受” 5、选择安装路径 “浏览”选择安装路径,点击"安装" 6、完成…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...