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-pod
  labels:
    app: my-app
spec:
  containers:
  - name: my-container
    image: nginx:1.14.2
    ports:
    - containerPort: 80
2. Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
3. Service
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer
格式要求

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

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

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

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

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

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx

---
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  ports:
  - port: 80
    targetPort: 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: alpine
      image: alpine:latest
      imagePullPolicy: Never
      command: ["/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: nginx33
      image: harbor.hiuiu.com/basic_image/centos7_filebeat_nginx:2408.u
      imagePullPolicy: Never
      ports:
      - containerPort: 80
      command: ["/bin/sh"]
      args: ["-c","while true; do echo hello; sleep 10; done"]

请添加图片描述
进入容器

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

真机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 文件来创建命名空间。
命名空间帮助组织和管理集群资源,尤其在多租户环境中非常有用。

Pod常见状态

pod的常见状态:
Unschedulable: #Pod不能被调度,kube-scheduler没有匹配到合适的node节点
PodScheduled: # pod正处于调度中 ,在kube-scheduler刚开始调度的时候,还没有将pod分配到指定的node,在筛选出合适的节点后就会更新etcd数据, 将pod分配到指定的node
Pending: #正在创建Pod但是Pod中的容器还没有全部被创建完成=[处于此状态的Pod应该检查Pod依赖的存储是否有权限挂载等。
Failed: #Pod中有容器启动失败而导致pod工作异常。
Unknown: #由于某种原因无法获得pod的当前状态,通常是由于与pod所在的node节点通信错误。
Initialized:#所有pod中的初始化容器已经完成了
ImagePullBackOff: #Pod所在的node节点下载镜像失败
Running: #Pod内部的容器已经被创建并且启动。
Ready: #表示pod中的容器已经可以提供访问服务
Error: #pod 启动过程中发生错误
NodeLost: #Pod 所在节点失联
Waiting: #Pod 等待启动
Terminating: #Pod 正在被销毁
CrashLoopBackOff: #pod崩溃,但是kubelet正在将它重启
InvalidImageName: #node节点无法解析镜像名称导致的镜像无法下载
ImageInspectError: #无法校验镜像,镜像不完整导致
ErrImageNeverPull: #策略禁止拉取镜像,镜像中心权限是私有等
RegistryUnavailable:#镜像服务器不可用,网络原因或harbor宕机
ErrImagePull: #镜像拉取出错,超时或下载被强制终止
CreateContainerConfigError:#不能创建kubelet使用的容器配置
CreateContainerError: #创建容器失败
RunContainerError: #pod运行失败,容器中没有初始化PID为1的守护进程等
ContainersNotInitialized:#pod没有初始化完毕
ContainersNotReady: #pod没有准备完毕
ContainerCreating: #pod正在创建中
PodInitializing: #pod正在初始化中
DockerDaemonNotReady: #node节点decker服务没有启动
NetworkPluginNotReady: #网络插件没有启动

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

机器学习|什么是梯度下降(小白向)|探寻最优解之路

文章目录 前言一、什么是梯度下降&#xff1f;二、梯度下降法一般步骤1.确定一个小目标——预测函数2.找到差距——代价函数3.明确搜索方向——梯度计算4.一步要走多远&#xff1f;——学习率 三、梯度下降的分类批量梯度下降&#xff08;Batch Gradient Descent&#xff09;随…

2007-2022年上市公司资源节约数据

2007-2022年上市公司资源节约数据 1、时间&#xff1a;2007-2022年 2、来源&#xff1a;上市公司年报、社会责任报告、上市公司网站信息 3、指标&#xff1a;水资源节约、电力节约、原煤节约、天然气节约、汽油节约、柴油节约、集中供热节约、折算成统一标准煤共计节约 4、…

flume--数据从kafka到hdfs发生错误

解决&#xff1a; #1.将flume自带的依赖删除 mv /opt/installs/flume1.9/lib/guava-11.0.2.jar /opt/installs/flume1.9/lib/guava-11.0.2.jar.bak #2.将hadoop的依赖发送到flume下 cp /opt/installs/hadoop3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar /opt/installs/f…

有哪些同声传译软件?精选5款实用工具

在浪漫之都巴黎&#xff0c;每一步都踏着历史与艺术的韵律。从埃菲尔铁塔下仰望的震撼&#xff0c;到塞纳河畔悠闲的咖啡时光&#xff0c;打卡巴黎地标已不再满足于传统方式。 如今&#xff0c;#打卡巴黎地标的方式nextlevel了#&#xff0c;科技与文化的碰撞开启了全新的体验篇…

『基础』线性代数-1行列式

行列式是什么-运算规则 排列&#xff1a;不同的 n 元排列共有 n! 个 逆序&#xff1a;小数排在大数后面&#xff0c;叫逆序&#xff1b;一个排列中逆序的总和叫做这个排列的逆序数&#xff0c;记为 τ ( j 1 , . . . , j n ) \tau(j_1,...,j_n) τ(j1​,...,jn​) 逆序数的计…

IP SSL证书的未来趋势:适应不断变化的安全挑战

随着网络攻击手段的不断进化和用户对隐私保护意识的增强&#xff0c;IP SSL证书作为保障网络安全的关键组件之一&#xff0c;也在不断地发展和完善。本文将探讨IP SSL证书的未来趋势&#xff0c;以及如何适应这些不断变化的安全挑战。 当前状况与挑战 网络安全意识提升&#…

LORA通信详解

LORA&#xff08;Long Range Radio&#xff09;是一种低功耗广域网&#xff08;LPWAN&#xff09;技术&#xff0c;专门设计用于物联网&#xff08;IoT&#xff09;设备的远距离通信。其长距离传输和低功耗特性使其在智能城市、环境监测、农业等领域中得到了广泛应用。 一、LOR…

音频分割软件有什么?最方便的音频分割软件分享给你

一段长音频就像是一本厚重的百科全书&#xff0c;而音频剪辑师的任务&#xff0c;就是要将这本书拆分成数个章节&#xff0c;每章都有其独立的主题和内容&#xff0c;这非常考验剪辑师们的音频分割技巧。 幸运的是&#xff0c;随着技术的发展&#xff0c;市面上出现了许多优秀…

每日一题——贪心算法

860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 这道题目乍一看可能没有什么头绪&#xff0c;但是当你仔细想想就会明白一个道理&#xff0c;那就是&#xff0c;《论电子支付的重要性》哈哈哈哈&#xff0c;言归正传&#xff0c;其实很简单无非就是找钱&#xff0c;…

5个值得关注的AI模型比较平台

AI 正在以极快的速度发展&#xff0c;每周都有新的 AI 模型进入市场。就在一周前&#xff0c;Mixtral AI 发布了一款新模型 Mixtral 8x22B Instruct。它在 MMLU 等多个基准测试中在开源模型中保持了整整 26 小时的性能领先地位。紧接着&#xff0c;LLaMa 3 进入现场&#xff0c…

如何用Python构建高校爬虫与k-means算法实现专业评分可视化分析

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

风清扬/基于Java语言的高能耗企业 水-电-气-热-油-空压机等数据采集系统-能源管理系统-在线监测系统

基于Java语言的高能耗企业 水-电-气-热-油-空压机等数据采集系统-能源管理系统-在线监测系统 介绍适用场景软件架构软件功能数字大屏安装教程参与贡献特技 基于Java语言的高能耗企业 水-电-气-热-油-空压机等数据采集系统-能源管理系统-在线监测系统 介绍 能源管理系统能源管…

python实现自动化生成pdf报告

easypdf使用手册 1. 项目介绍1.1 关于1.2 easypdf 有什么优势1.2 easypdf 可以用来做什么1.3 项目框架1.4 项目教程视频 2. 安装项目环境2.1 安装Python32.2在Windows上安装Python32.3 在Mac上安装Python32.4 在Linux上安装Python32.5 在Windows上安装Pycharm2.6 在Mac上安装Py…

声明式事务及编程式事务

目录 1.事务说明 2.事务及数据库的隔离级别 3.事务的传播行为 4.声明是事务 5.编程式事务 6.避免长事务的方式 1.事务说明 数据库的事务是一组操作的集合&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败。用于确保事务的一致性及完整性&#xff0c;事务的主要…

PHP导出生成PDF文件开源组件:mPDF使用详情

最近在使用php要实现一个把旅游线路导出成pdf文件下载&#xff0c;在全网搜索了一遍有几个常用的开源组件&#xff0c;在PHP中生成PDF文件&#xff0c;比如FPDF、TCPDF、mPDF等。在对比了一圈后就 mPDF开源地址&#xff1a; https://github.com/mpdf/mpdf mPDF版本说明 PHP…

探索地理空间分析的新世界:Geopandas的魔力

文章目录 探索地理空间分析的新世界&#xff1a;Geopandas的魔力背景&#xff1a;为何选择Geopandas&#xff1f;这个库是什么&#xff1f;如何安装这个库&#xff1f;五个简单的库函数使用方法场景应用&#xff1a;Geopandas在实际工作中的应用常见bug及解决方案总结 探索地理…

鲲鹏服务器安装Kafka

由于项目需求&#xff0c;需要在鲲鹏云主机上安装Kafka&#xff0c;并且要求安装的版本为2.3.X。下面主要从以下几个步骤说明如何安装&#xff1a; 1、下载kafka的安装文件 2、上传到服务器 3、修改配置 4、启动 5、使用工具测试 服务器信息 CPU信息 [rootecs02 ~]# lscpu A…

集团数字化转型方案(六)

集团数字化转型方案旨在通过引入前沿技术&#xff0c;如人工智能&#xff08;AI&#xff09;、大数据分析、云计算和物联网&#xff08;IoT&#xff09;&#xff0c;全面提升业务运营效率和市场竞争力。该方案首先实现业务流程的自动化&#xff0c;减少人工干预&#xff0c;通过…

第1章-05-通过浏览器控制台安装JQuery.js库

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年CSDN全站百大博主。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于专栏:Web爬虫入门与实战精讲。 🎉欢迎 👍点赞✍评论⭐收…

自抗扰控制ADRC原理解析及案例应用

1. ADRC基本原理 1.1 ADRC的基本概念 自抗扰控制&#xff08;Active Disturbance Rejection Control&#xff0c;ADRC&#xff09;是一种先进的控制策略&#xff0c;由韩京清研究员于1998年提出。ADRC的核心思想是将系统内部和外部的不确定性因素视为总扰动&#xff0c;并通过…