当前位置: 首页 > 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…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...