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

Kubectl基础命令使用

一.Kubectl 基础命令

格式: kubectl [command] [TYPE] [NAME] [FLAGS]

kubectl 是 Kubernetes 的命令行工具,用于管理 Kubernetes 集群。以下是一些常用的 kubectl 命令及其选项:

常用命令

  1. 获取资源

    • 列出所有资源类型(Pods、Deployments、Services 等):
 kubectl get all

请添加图片描述

  • 获取特定资源的详细信息:
kubectl api-resources
kubectl get pods 
kubectl get deployments 
kubectl get services
kubectl get svc

请添加图片描述

  • 获取资源的详细信息:
   kubectl describe pod <pod-name> kubectl describe deployment <deployment-name>
  • 查看集群版本
kubectl version
  1. 创建和应用资源

    • 从 YAML 文件创建资源:
 kubectl create -f <file.yaml>
  • 更新或应用资源:
 kubectl apply -f <file.yaml>
  • 创建特定资源:
 kubectl create deployment <deployment-name> --image=<image> kubectl create service clusterip <service-name> --tcp=<port>:<target-port>
  1. 删除资源

    ​ 删除资源:

   kubectl delete pod <pod-name> kubectl delete deployment <deployment-name> kubectl delete -f <file.yaml>
  1. 查看日志

    • 查看 Pod 的日志:
 kubectl logs <pod-name>
  • 查看某个容器的日志(如果 Pod 中有多个容器):
   kubectl logs <pod-name> -c <container-name>
  1. 执行命令

    • 在 Pod 中执行命令:
 kubectl exec -it <pod-name> -- /bin/bash
  1. 集群和上下文管理

    • 查看当前上下文:
 kubectl config current-context
  • 列出所有上下文:
   kubectl config get-contexts
  • 切换上下文:
kubectl config use-context <context-name>
  1. 滚动更新

    • 更新 Deployment:
 kubectl rollout restart deployment <deployment-name>
  • 查看滚动更新状态:
 kubectl rollout status deployment <deployment-name>
  1. 集群健康检查

    • 获取集群状态:
 kubectl cluster-info
  • 检查节点状态:
 kubectl get nodes

常用选项

  • -n--namespace:指定命名空间。例如:
  kubectl get pods -n <namespace>
  • -o--output:指定输出格式,如 jsonyamlwidename 等。例如:
  kubectl get pods -o wide kubectl get pods -o json
  • --selector:按标签选择资源。例如:
  kubectl get pods --selector=app=<label>

-o wide 或 --output=wide

提供更详细的信息,包含额外的列,如节点 IP、容器状态等。

kubectl get pods -o wide
kubectl get nodes -o wide

-o json

将输出格式化为 JSON 格式。这适合需要机器解析的情况。

kubectl get pod nginx11 -o json

-o yaml

将输出格式化为 YAML 格式。这适合需要人类阅读的详细格式。

kubectl get pod nginx11 -o yaml
kubectl get pod kube-system-sddcd -n kube-system -o yaml

-o name

仅输出对象的名称,适合在脚本中使用。

kubectl get pod -o name
  • -f--filename:指定文件路径(通常用于创建或更新资源)。例如:
  kubectl apply -f <file.yaml>
  • --context:指定集群上下文。例如:
 kubectl get pods --context=<context-name>
  • --kubeconfig:指定 kubeconfig 文件的路径。例如:
  kubectl get pods --kubeconfig=<path-to-kubeconfig>

这些是 kubectl 的一些基本命令和选项,可以帮助你管理和操作 Kubernetes 集群。根据需要,你还可以查看 kubectl 的帮助文档,以了解更多详细信息和高级功能:

kubectl --help

二.Kubectl执行yaml文件

yaml文件介绍

在使用 kubectl apply -f 命令执行 YAML 文件时,确保文件格式正确是很重要的。Kubernetes YAML 文件遵循一定的格式规范,下面是 YAML 文件的一些基本结构和格式要求:

基本结构

一个典型的 Kubernetes YAML 文件包含以下部分:

apiVersion: 定义资源的 API 版本。
kind: 资源的类型(如 Pod、Deployment、Service 等)。
metadata: 资源的元数据,如名称、标签等。
spec: 资源的规格定义,具体内容依据资源类型而不同。
示例 YAML 文件
以下是一些常见资源类型的 YAML 文件示例:

1. Pod
apiVersion: v1
kind: Pod
metadata:name: my-podlabels:app: my-app
spec:containers:- name: my-containerimage: nginx:1.14.2ports:- containerPort: 80
2. Deployment
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80
3. Service
apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: LoadBalancer
格式要求

缩进: YAML 文件使用空格进行缩进,通常每级缩进两个空格。请不要使用制表符(Tab)进行缩进。

空行: 不建议在文件中使用多余的空行,尽量保持文件的简洁和清晰。

键值对: 键和值之间用冒号 : 隔开,冒号后面需要有一个空格。

列表项: 列表项前面用连字符 - 和一个空格。

多文档文件: 如果在一个文件中定义多个资源,可以使用 — 分隔每个文档。例如:

apiVersion: v1
kind: Pod
metadata:name: my-pod
spec:containers:- name: my-containerimage: nginx---
apiVersion: v1
kind: Service
metadata:name: my-service
spec:ports:- port: 80targetPort: 80

验证 YAML 文件
在应用 YAML 文件之前,你可以使用以下命令检查文件的语法是否正确:

kubectl apply --dry-run=client -f your-file.yaml
这个命令不会实际应用资源,只会验证 YAML 文件的格式和语法是否正确。

总结

确保你的 YAML 文件符合上述格式要求,并且每个部分都正确配置。遵循这些规则可以帮助避免在执行 kubectl apply 时遇到格式错误。如果你有任何特定的 YAML 文件或格式问题,可以提供更多细节,以便获得更具体的帮助。
实战示例
编辑yaml文件拉取apline镜像

apiVersion: v1
kind: Pod
metadata:name: alpine
spec:containers:- name: alpineimage: alpine:latestimagePullPolicy: Nevercommand: ["/bin/sh"]args: ["-c","while true; do echo hello; sleep 10; done"]
## imagePul1Policy有三个取值
# Always 每次都下载最新镜像
#Never不会尝试获取镜像,如果镜像已经以某种方式存在本地,kubelet 尝试启动容器;否则,会启动失败
#IfNotPresent 只有当镜像在本地不存在时才会拉取
并 默认镜像拉取策略:
#当你(或控制器)向API服务器提交一个新的Pod时,你的集群会在满足特定条件时设置imagePu11Policy字段
# 如果你省略了
imagePul1Policy字段,并且容器镜像的标签是:latest,imagePul1Policy会自动设置为Always
#如果你省略了imagePul1Policy字段,并且没有指定容器镜像的标签,imagePu11Policy会自动设置为Alweys
#如果你省略了imagePul1Policy字段,并且为容器镜像指定了非:1atest的标签,imagePul1Policy 就会自动设置为IfNotPresent

请添加图片描述
编辑yaml文件拉取nginx镜像

apiVersion: v1
kind: Pod
metadata:name: nginx33
spec:containers:- name: nginx33image: harbor.hiuiu.com/basic_image/centos7_filebeat_nginx:2408.uimagePullPolicy: Neverports:- containerPort: 80command: ["/bin/sh"]args: ["-c","while true; do echo hello; sleep 10; done"]

请添加图片描述
进入容器

 kubectl  exec  nginx33  -it bash#进入容器开启nginxnginxexit

真机ping pod
请添加图片描述

三.管理命名空间

1.列出所有命名空间

要列出集群中所有的命名空间,你可以使用以下命令:

kubectl get namespaces
#简写
kubectl get ns

请添加图片描述

2.查看特定命名空间的详细信息

如果你想查看某个特定命名空间的详细信息,可以使用 describe 命令:

kubectl describe namespace <namespace-name>

例如,要查看名为 my-namespace 的详细信息,可以运行:

kubectl describe namespace my-namespace

这个命令会显示该命名空间的详细描述,包括其标签、注解和其他相关信息。
请添加图片描述

3.查看当前上下文中的命名空间

要查看当前上下文中默认使用的命名空间,可以使用:

kubectl config view --minify --output 'jsonpath={..namespace}'
kubectl config view
#查看当前命名空间

这个命令会显示你当前的 Kubernetes 配置文件中,默认的命名空间。如果没有指定,通常默认是 default。

4.查看当前命名空间中的资源

如果你想查看当前命名空间中的资源,可以首先确认当前命名空间(如上所述),然后使用 kubectl get 命令查看特定资源类型。例如:

kubectl get pods

此命令默认会列出当前命名空间中的所有 Pods。

5.切换命名空间

在查看资源时,你可能需要在不同的命名空间之间切换。使用 -n 标志来指定命名空间,例如:

kubectl config set-context --current --namespace=namespace-name

请添加图片描述

6.创建命名空间

使用 kubectl 命令行工具创建命名空间

你可以使用 kubectl 命令来创建新的命名空间。以下是创建命名空间的基本命令:

kubectl create namespace <namespace-name>

例如,要创建一个名为 my-namespace 的命名空间,可以运行:

kubectl create namespace my-namespace
使用YAML 文件定义命名空间

你还可以通过编写一个 YAML 文件来定义命名空间,然后使用 kubectl 命令应用这个文件。例如,创建一个名为 my-namespace 的 YAML 文件 namespace.yaml,内容如下:

apiVersion: v1
kind: Namespace
metadata:name: my-namespace

然后运行以下命令来应用这个配置:

kubectl apply -f namespace.yaml

7.删除命名空间

删除命名空间会删除该命名空间中的所有资源。使用以下命令删除命名空间:

kubectl delete namespace <namespace-name>

8.总结

列出所有命名空间:kubectl get namespaces 或 kubectl get ns 查看特定命名空间详细信息:kubectl
describe namespace 查看当前上下文的命名空间:kubectl config view
–minify --output ‘jsonpath={…namespace}’ 查看特定命名空间中的资源:kubectl get -n 命名空间 是 Kubernetes 中用于资源隔离的机制。 可以通过
kubectl create namespace 命令或 YAML 文件来创建命名空间。
命名空间帮助组织和管理集群资源,尤其在多租户环境中非常有用。

相关文章:

Kubectl基础命令使用

一.Kubectl 基础命令 格式&#xff1a; kubectl [command] [TYPE] [NAME] [FLAGS] kubectl 是 Kubernetes 的命令行工具&#xff0c;用于管理 Kubernetes 集群。以下是一些常用的 kubectl 命令及其选项&#xff1a; 常用命令 获取资源 列出所有资源类型&#xff08;Pods、De…...

推荐编译器插件:Fitten Code 更快更好的AI助手

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

ArcGIS Pro基础:状态栏显示栏的比例尺设置和经纬度位置

上图所示&#xff0c;界面下方最左侧是显示的比例尺&#xff0c;可以进行选择设置&#xff0c;也可以进行自定义设置 上图所示&#xff0c;可以手动录入比例尺&#xff0c;同时也可以对比例尺设置别名&#xff0c;比如【实验1】作为特定比例尺的标记 如上图所示&#xff0c;可以…...

微前端架构入门

什么是微前端? 定义 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 微前端是一种架构风格,它允许将一个复杂的大前端应用拆分成多个可以独立开发、部署的小型前端应用。这些小型前端应用通常被称为“子应用”或者“微前端应用…...

[LitCTF 2023]导弹迷踪

页面源码底部有多个js,查看浏览 查看ksrc/game.js发现flag...

win10安装wsl2(ubuntu20.04)并安装 TensorRT-8.6.1.6、cuda_11.6、cudnn

参考博客&#xff1a; 1. CUDA】如何在 windows 上安装 Ollama 3 open webui &#xff08;docker WSL 2 ubuntu nvidia-container&#xff09;&#xff1a;https://blog.csdn.net/smileyan9/article/details/140391667 2. 在 Windows 10 上 安装 W…...

信息搜集--敏感文件Banner

免责声明:本文仅做分享参考... 目录 git安装: git目录结构: 敏感目录泄露 1-git泄露 (1)常规git泄露 scrabble工具 (2)git回滚 (3)git分支 GitHacker工具 (4)git泄露的其他利用 .git重定向问题 2-SVN泄露 dvcs-ripper工具 3-小结 dirsearch目录扫描工具 敏感备…...

Qt 学习第六天:页面布局

如何设计页面&#xff1f; 有个类似沙盒模式的玩法&#xff0c;Qt Widget Designer可以更好的帮助我们设计页面 点击.ui文件进入 右上方可以看到四种常见的布局&#xff1a; 四种布局 &#xff08;一&#xff09;水平布局horizontalLayout&#xff1a;QHBoxLayout H 是 hori…...

利用队列收集单双击和长按按键

利用队列收集单双击和长按按键 引言 当我们仅仅通过在while循环里面进行判断按键类型的标志位, 然后进行操作的时候, 我们的最小例程很小, 所以能够实时的检测到按键,从而触发实验现象. 假如我们此时进入了一个事件处理函数呢 ? 并且这个这个函数的操作是不可被打断的, 如果此…...

AI工作流:低代码时代的革新者,重塑手机问答类应用生态

在这个数字化迅猛发展的时代&#xff0c;低代码技术正以惊人的速度改变着我们的生活方式。作为低代码人群的先锋&#xff0c;AI工作流技术正在以前所未有的方式&#xff0c;赋予非技术人群实现梦想的能力 &#x1f525;能用AI-低代码传送门&#xff1a;https://www.nyai.chat …...

配置MySQL主从,配置MySQL主主 +keeplive高可用

在大数据-Hadoop体系中 配置MySQL主主keeplive高可用 注意&#xff1a;这个是我两年前的word文档&#xff0c;可以当作参考文档有个思路参考一下&#xff0c;但是里面可能有些地方有误 另外 :关于一些企业级实战技术可以参考这篇mysql 物理备份 MySQL 全量备份 增量备份 差异…...

第5节:Elasticsearch核心概念

我的后端学习笔记大纲 我的ElasticSearch学习大纲 1.Lucene和Elasticsearch的关系: 1.Lucene&#xff1a;最先进、功能最强大的搜索库&#xff0c;直接基于lucene开发&#xff0c;非常复杂&#xff0c;api复杂2.Elasticsearch&#xff1a;基于lucene&#xff0c;封装了许多luc…...

存储实验:华为异构存储在线接管与在线数据迁移(Smart Virtualization Smart Migration 特性)

目录 目的实验环境实验步骤参考文档1. 主机安装存储多路径2. v2存储创建Lun&#xff0c;映射给主机&#xff1b;主机分区格式化&#xff0c;写数据3. 将v2存储映射该成映射到v3存储上(v3存储和v2之间链路搭建&#xff0c;测通&#xff0c;远端设备&#xff09;&#xff08;Smar…...

职业院校云计算实训室建设方案全景剖析

在信息化社会的今天&#xff0c;云计算作为一项关键技术&#xff0c;正在迅速改变着教育和培训的方式。本文旨在探讨如何通过"职业院校云计算实训室建设方案"&#xff0c;为学生提供一个现代化、高效的学习和研究环境&#xff0c;以适应云计算技术的发展和市场需求。…...

VS Code安装与vue项目新建

1、下载安装node.js、VS Code node.js官网下载 Visual Studio Code官网下载 # 查看node.js是否安装成功 node -v npm -v # 定义镜像路径 npm config set registry https://registry.npmmirror.com # 查看是否配置成功 npm config get# 安装webpack npm install webpack -g #…...

如何在Java中将数据库查询结果转换为枚举类型

前言 在开发过程中&#xff0c;我们经常需要将从数据库获取的字符串或数字转换为更具语义的枚举类型。这不仅可以提高代码的可读性&#xff0c;还可以确保类型安全。这时候我们从数据库查出来的值如何通过枚举转换返回&#xff1f; 1. 构建枚举类型 首先&#xff0c;我们需要…...

秋招突击——8、20——知识补充——Java容器

文章目录 引言正文总览ArrayListLinkedListQueue & Stack & ArrayDequePriorityQueue![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/acdc7f306a2e4052bc6bc14a175e67fc.png)HashSet & HashMapLinkedHashSet & LinkedHashMapTreeSet & TreeMap 面…...

IOS 06 OC调用Swift第三方框架

前面文章05讲的是在OC项目中&#xff0c;调用Swift代码&#xff0c;而在真实开发过程中&#xff0c;在OC项目中调用Swift第三方框架场景用的是非常多的&#xff0c;所以我们也了解在OC项目如何使用Swift写的三方框架。 实现流程&#xff1a; 1、OCUseSwiftTest&#xff1b;在…...

SAP和致远OA系统集成案例

一、项目介绍 重庆某控股&#xff08;集团&#xff09;有限公司是一家集合汽柴油动力及终端、摩托车、储能电源、汽车零部件、金融服务等产业的多元化集团公司&#xff0c;业务遍布全球80多个国家及地区&#xff0c;2021年营业收入达80亿元。 为推动集团信息化、数字化转型…...

19 OptionMenu 组件

OptionMenu 组件使用指南 Tkinter 的 OptionMenu 组件是一个下拉选择框&#xff0c;允许用户从一组预定义的选项中选择一个。它通常用于提供用户一个有限的选项集合来选择。以下是对 OptionMenu 组件的详细说明和一个使用案例。 OptionMenu 组件属性 variable: 与 OptionMen…...

【C语言】字符函数与字符串函数(上)

字符函数与字符串函数&#xff08;上&#xff09; 文章目录 字符函数与字符串函数&#xff08;上&#xff09;1.字符分类函数2.字符转换函数3.strlen的使用和模拟实现3.1使用示例&#xff1a;3.2模拟实现 4.strcpy的使用和模拟实现4.1使用示例:4.2模拟实现 5.strcat的使用和模拟…...

机器学习系列—深入探索弗里德曼检验:非参数统计分析的利器

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…...

【ubutnu18.04】k8s 部署4: worker节点配置1.31.0和containerd 1.7.20

上一篇:【ubutnu24.04】k8s部署3:重新安装1.31.0并init成功 worker 节点之一是ubuntu18.04主要参考 How Install Kubernetes on Ubuntu 24.04 (Step-by-Step Guide) 重点参考 ubuntu24.04 作为master反复配置kubelet root@PerfSvr:/home/zhangbin/perfwork/k8sadmin# sudo kub…...

android kotlin集成WorkManager实现定时获取数据

在Android中使用Kotlin集成WorkManager来实现定时获取数据是一个很常见的需求。WorkManager可以帮助你在设备处于闲置或应用被关闭时执行后台任务&#xff0c;特别适用于需要在特定时间间隔内重复执行的任务。以下是实现步骤&#xff1a; 1. 添加依赖项 首先&#xff0c;在你…...

BvSP_ Broad-view Soft Prompting for Few-Shot Aspect Sentiment Quad Prediction

BvSP: Broad-view Soft Prompting for Few-Shot Aspect Sentiment Quad Prediction 英文题目BvSP: Broad-view Soft Prompting for Few-Shot Aspect Sentiment Quad Prediction中文题目BvSP&#xff1a;面向少样本方面情感四元预测的广视角软提示论文地址aclanthology.org/202…...

React+Vis.js(05):vis.js的节点的点击事件

文章目录 需求实现思路抽屉实现完整代码需求 双击节点,弹出右侧的“抽屉”,显示节点的详细信息 实现思路 vis.network提供了一个doubleClick事件,代码如下: network.on(doubleClick, function (properties) {// console.log(nodes);let id = properties...

今日(2024 年 8 月 19 日)科技新闻

科大讯飞推出星火极速超拟人交互&#xff1a;8 月 19 日&#xff0c;科大讯飞宣布星火语音大模型更新&#xff0c;正式推出星火极速超拟人交互&#xff0c;并将其能力落地在讯飞星火 APP “小星畅聊” 功能中。该交互响应速度更快&#xff0c;能感知用户情绪变化并共情回应&…...

Python 虚拟环境

为什么要创建虚拟环境 创建 Python 虚拟环境的主要目的是为了解决依赖管理的问题&#xff0c;特别是在开发多个项目或部署应用程序时&#xff0c;虚拟环境具有以下几个优势&#xff1a; 依赖隔离&#xff1a; 不同的项目可能需要不同版本的 Python 解释器和库。通过创建虚拟环…...

Redis RDB三两事

rdb&#xff1a;将数据库的快照以二进制格式保存在文件中&#xff0c;redis重启后直接加载数据。可以通过save和bgsave命令生成rdb。当然我们可以在生成rdb文件时指定规则&#xff0c;例如 save 60 1000 如果60秒内不少于1000个key发生了改动&#xff0c;则生成一个新的rdb文件…...

分布式高可用架构设计

一、限流 1、单机限流 如图&#xff0c;应用C的资源c/x被上游的应用A和应用C并发访问&#xff0c;应用C的系统能力支持c/x资源最高5000/qps的访问量&#xff1b;为了不让高并发流量或尖峰流量压垮应用C&#xff0c;可以针对应用C的资源c/x做限流&#xff1b;比如设置限流4500…...