Kubectl命令、初识pod、namespace

文章目录

  • 一、Kubectl
    • 简介
    • 基础命令
      • 1.基本信息命令
      • 2.创建和更新资源命令
      • 3.删除资源命令
      • 4. 查看日志和调试命令
      • 5. 端口转发和复制文件命令
      • 6. 部署管理命令
      • 7. 伸缩命令
      • 8. 配置和上下文管理命令
      • 9.常用命令
  • 二、Pod
    • 简介
    • 核心概念
    • pod常见状态
      • 调度和初始化阶段
      • 容器创建和运行阶段
      • 异常状态与错误处理
      • Pod 终止与其他异常
  • 三、Namespace
    • 简介
    • 核心功能
    • 默认 Namespace
    • 管理namespace
    • 实践应用


一、Kubectl

简介

kubectl 是 Kubernetes 的命令行工具,用于与 Kubernetes 集群交互。它允许用户通过命令行来部署和管理应用程序、查看和管理集群资源,以及获取集群的状态信息。下面是一些 kubectl 常用的功能:

  1. 管理资源

    • 创建、更新、删除以及查看 Kubernetes 资源,如 pods、services、deployments 等。
    • 例如,kubectl get pods 用于获取当前集群中所有 pods 的信息。
  2. 配置管理

    • 配置和查看 Kubernetes 集群的配置详情。
    • 使用 kubeconfig 文件管理多个集群访问。
  3. 排查问题

    • 收集 pods 和其他资源的日志,通过 kubectl logs
    • 访问正在运行容器的命令行,通过 kubectl exec
  4. 查看集群状态

    • 查看集群的当前状态和运行的服务,使用诸如 kubectl cluster-info 命令。
  5. 应用升级和滚动更新

    • 控制应用程序的升级和回滚,通过 kubectl applykubectl rollout 来管理。

总之,kubectl 是运维和开发人员与 Kubernetes 集群交互的强大工具,帮助管理复杂的分布式应用程序的生命周期。要有效使用 kubectl,用户通常需要对 Kubernetes 的资源模型和核心概念有一定的了解。

基础命令

kubectl [command] [TYPE] [NAME] [FLAGS]
  • command是对k8s资源执行的动作和操作。例如,get、create、apply、delete。
  • type表示要操作的资源类型。常见的资源pods、services、deployments、nodes 等。
  • NAME 是资源的名称,用于指定特定资源进行操作。如果不指定 NAME,通常意味着操作涉及该类型的所有资源。
  • FLAGS 是可选的标志,用于修改命令的行为或提供额外的信息。常见的标志-n(指定命名空间);-o (json yaml wide)指定输出格式;-all,当删除资源师,将操作所有这些资源,kubectl delete pods --all。

1.基本信息命令

获取资源列表:

  • kubectl get pods:列出所有 Pods。
  • kubectl get services:列出所有 Services。
  • kubectl get deployments:列出所有 Deployments。
  • kubectl get nodes:列出集群中的所有节点。

获取详细信息

  • kubectl describe pod <pod-name>:显示特定 Pod 的详细信息。
  • kubectl describe service <service-name>:获取特定 Service 的详细信息。
    排错的时候有用

2.创建和更新资源命令

  • 创建资源:

    • kubectl create deployment nginx --image=nginx:创建一个 nginx Deployment。
  • 应用 YAML 配置:

    • kubectl apply -f <filename>.yaml:根据 YAML 文件创建或更新资源。
      一般选择使用yaml文件配置。

3.删除资源命令

  • 删除资源:
    • kubectl delete pod <pod-name>:删除一个 Pod。
    • kubectl delete -f <filename>.yaml:根据 YAML 文件删除资源。

4. 查看日志和调试命令

  • 查看 Pod 日志:

    • kubectl logs <pod-name>:查看 Pod 的日志输出。
    • kubectl logs -f <pod-name>:持续跟踪 Pod 的日志。
  • 在容器中执行命令:

    • kubectl exec -it <pod-name> -- /bin/bash:进入 Pod 中运行的容器的交互式 shell。
    • kubectl exec <pod-name> -- ls /app:在指定 Pod 的容器中运行 ls /app 命令。

5. 端口转发和复制文件命令

  • 端口转发:

    • kubectl port-forward <pod-name> <local-port>:<pod-port>:将本地端口转发到 Pod 上指定的端口。
  • 复制文件:

    • kubectl cp <pod-name>:/path/to/file /local/path:从一个 Pod 复制文件到本地系统。
    • kubectl cp /local/path <pod-name>:/path/to/file:将本地文件复制到 Pod。

6. 部署管理命令

  • 滚动更新状态:

    • kubectl rollout status deployment/<deployment-name>:查看滚动更新的状态。
  • 回滚更新:

    • kubectl rollout undo deployment/<deployment-name>:回滚到上一个 Deployment 版本。

7. 伸缩命令

  • 伸缩 Deployment:

    • kubectl scale deployment <deployment-name> --replicas=3:将 Deployment 的副本数量调整为 3。

8. 配置和上下文管理命令

  • 查看集群信息:

    • kubectl cluster-info:显示当前集群的信息。
  • 切换上下文:

    • kubectl config use-context <context-name>:切换到不同的 kubeconfig 上下文。
  • 列出命名空间:

    • kubectl get namespaces:列出所有的命名空间。

9.常用命令

kubectl get pod -A 
查看所有的pod
kubectl get pods NAME -o wide
查看pod的扩展信息
kubectl cluster-info
查看集群信息
kubectl config view
用于查看当前kubeconfig配置信息的命令。
kubeconfig 文件存储了如何连接到一个或多个 Kubernetes 集群的信息,
包括集群、用户凭证和命名空间等,这允许用户管理不同的 Kubernetes 环境。
kubectl version
查看kube集群版本

在这里插入图片描述

查看命令说明:kubectl explain pod

在这里插入图片描述
这条命令可以查询命令的用法。十分重要。

二、Pod

简介

在 Kubernetes 中,Pod 是部署和管理应用的最小单位。它是 Kubernetes 中运行着一个或多个容器的抽象层。Pod 提供了一种高效的模型来运行应用工作负载。

核心概念

  1. 一个或多个容器

    • Pod 中可以包含一个或多个容器。这些容器共享相同的网络地址和存储卷,并且相互之间能高效通信。
    • 在实际应用中,大多数 Pod 包含一个主要容器和可能存在的辅助容器(通常称为 sidecar,比如日志代理或数据处理器)。
  2. 共享的网络命名空间

    • 在同一 Pod 内的容器共享相同的 IP 地址和端口空间,这意味着它们可以通过 localhost 直接通信。
    • 外部访问 Pod 的方式是通过 Pod 暴露的服务。
  3. 共享的存储

    • Pod 可以挂载存储卷到多个容器中,这使得容器之间可以共享文件系统数据。
  4. 生命周期

    • Kubernetes 负责调度 Pod 到集群中的节点上运行,并且会在 Pod 失败时自动重启。
    • Pod 是短暂的,旨在设计为一次性发生故障后被删除和替换的对象,而不是在生命周期过程中修复的。
  5. 调度

    • Pod 是通过调度器安排在不同的节点上运行的。调度器会根据集群的可用资源和设置的约束来决定将 Pod 放置在哪个节点上。

pod常见状态

调度和初始化阶段

  1. PodScheduled

    • Pod 已被调度,但还未在节点上运行。
  2. Unschedulable

    • 调度器找不到合适的节点来运行 Pod,这可能是由于资源不足或调度约束无法满足。
  3. Pending

    • Pod 刚创建,正在等待节点的调度或需要的资源准备好。检查依赖条件(如存储)是否满足。
  4. Initialized

    • Pod 中的所有初始化容器已成功完成。
  5. PodInitializing

    • Pod 正在完成初始化步骤。

容器创建和运行阶段

  1. ContainerCreating

    • 容器正在创建中。
  2. Running

    • Pod 的容器已在节点上运行。
  3. Ready

    • Pod 的所有容器都已准备好接受请求。

异常状态与错误处理

  1. CrashLoopBackOff

    • Pod 持续崩溃,kubelet 正在尝试重启。
  2. ImagePullBackOff

    • 因为下载镜像失败,Pod 无法启动。
  3. InvalidImageName

    • 节点无法解析镜像名称,导致镜像无法下载。
  4. ImageInspectError

    • 镜像校验失败,镜像可能不完整。
  5. ErrImagePull

    • 拉取镜像出错,可能由于超时或权限问题。
  6. ErrImageNeverPull

    • 策略不允许拉取镜像(可能需要本地存在该镜像)。
  7. RegistryUnavailable

    • 镜像仓库不可用,可能由于网络问题或仓库宕机。
  8. CreateContainerConfigError

    • 不能创建 kuelet 使用的容器配置。
  9. CreateContainerError

    • 创建容器失败。
  10. RunContainerError

    • Pod 启动失败,可能是应用程序配置错误(如没有初始化 PID 1 的守护进程)。
  11. ContainersNotInitialized

    • 容器还未初始化完成。
  12. ContainersNotReady

    • 容器未准备好提供服务。

Pod 终止与其他异常

  1. Terminating

    • Pod 正在终止过程中。
  2. NodeLost

    • 所在节点失去连接,导致 Pod 无法运行。
  3. Unknown

    • 无法获取 Pod 当前状态,通常是由于节点通信故障。
  4. DockerDaemonNotReady

    • 节点上的 Docker 守护进程未启动。
  5. NetworkPluginNotReady

    • 节点上的网络插件尚未准备好。

三、Namespace

简介

在 Kubernetes 中,Namespace 是用于在同一集群中将资源进行逻辑隔离和分组的一种机制。它提供了一种在单个集群中管理多个环境、场景或团队的方式,这对于大型企业或多个项目共用一个集群的场景特别有用。

核心功能

  1. 逻辑隔离

    • Namespace 提供了一种用于将不同的项目、团队或环境(如开发、测试、生产)隔离开来的方法。
    • 不同 Namespace 间的资源不会互相干扰,具有独立的命名空间。
  2. 资源管理

    • 可以通过 Namespace 来限制资源配额。比如:定义每个 Namespace 可以使用的 CPU 和内存限制。
    • 使用 ResourceQuotaLimitRange 限制和管理资源的使用。
  3. 访问控制

    • 配合 Kubernetes 的角色访问控制(RBAC)系统,可以定义用户或团队对特定 Namespace 的读写权限。
    • 通过角色(Role)和角色绑定(RoleBinding)来控制 Namespace 范围内的权限。
  4. 命名隔离

    • 同一个集群内可以使用相同的资源名称(如 Pod、Service 名称),但位于不同的 Namespace 中,以实现命名冲突的最小化。

默认 Namespace

Kubernetes 提供了一些预定义的 Namespace,帮助组织系统组件和用户资源:

  • default

    • 默认 Namespace,没有指定 Namespace 的资源都会创建在这里。
  • kube-system

    • 存放 Kubernetes 自身的系统组件和基础服务,如 API server、scheduler、controller manager。
  • kube-public

    • 是一个通用的 Namespace,用于存放集群内公共资源信息,默认所有用户可读取。
  • kube-node-lease

    • 用于存储节点租约信息,从而提高节点心跳检测性能。
      在这里插入图片描述

管理namespace

列出所有namespace:

kubectl get namespaces

创建一个新的 Namespace:

kubectl create namespace <namespace-name>

删除一个 Namespace:

kubectl delete namespace <namespace-name>  

查看 Namespace 细节:

kubectl describe namespace <namespace-name>  

在一个特定的 Namespace 中列出所有 Pods:

kubectl get pods -n my-namespace  

设置默认的 Namespace 以减少每个命令中指定 Namespace 的需要:

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

Namespace 是 Kubernetes 中用于逻辑隔离和组织大量资源的关键机制,特别适合多租户环境和大型集群。在现代集群管理中,通过合理地使用 Namespace,可以提高集群的安全性和可管理性。

实践应用

    • 使用 Namespace 来分隔不同的环境(开发、测试、生产)
    • 为不同的团队或项目创建单独的 Namespace
    • 利用 ResourceQuota 防止资源过度使用
    • 使用 RBAC[“Role-Based Access Control”(基于角色的访问控制)]来管理 Namespace 的访问权限
  1. 注意事项

    • 删除 Namespace 会删除其中的所有资源
    • 某些 Kubernetes 功能(如 DNS)在所有 Namespace 中共享
    • 不同 Namespace 中的服务可以相互通信,除非有网络策略限制

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

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

相关文章

Zookeeper服务注册及心跳机制详解

ZooKeeper提供了一种类似于文件目录的结构来保存key值&#xff0c;其提供了四种key类型&#xff0c;分别是持久节点&#xff0c;临时节点&#xff0c;持久有序节点&#xff0c;临时有序节点。其中临时节点的特性是当创建此节点的会话断开时&#xff0c;节点也会被删除。这一特性…

Apache Commons-IO 库

Apache Commons-IO是Apache开源基金组织提供的一组有关IO&#xff08;Input/Output&#xff09;操作的小框架。这个库的主要目的是为了提高IO流的开发效率&#xff0c;减少在进行文件读写、目录遍历等操作时编写的样板代码量。通过使用Commons-IO库&#xff0c;开发者可以更加简…

WT32-ETH01开发板模块,启明云端物联网方案,乐鑫ESP32多样化开发应用

在物联网(IoT)的浪潮中&#xff0c;无线Wi-Fi模块作为连接传统硬件与现代智能网络的桥梁&#xff0c;正逐渐成为智能家居和设备通信不可或缺的一部分。Wi-Fi模块也被称为串口Wi-Fi模块&#xff0c;是一种嵌入式模块&#xff0c;它能够将串口或TTL电平信号转换为符合Wi-Fi无线网…

关于AR在医疗领域创新应用

AR技术在医疗领域创新应用&#xff0c;旨在展示AR技术如何为医疗行业带来革命性的变化&#xff0c;我们可以从以下几个方面入手&#xff1a; 一、引言 随着科技的飞速发展&#xff0c;增强现实&#xff08;AR&#xff09;技术正逐步渗透到医疗领域的各个环节&#xff0c;为患…

蓝桥杯2021第十二届蓝桥杯青少年组省赛试题真题

带我去看题解&#xff01;&#xff01;&#xff01; 带我去看题单&#xff01;&#xff01;&#xff01; 目录 第一题&#xff1a;[2021第十二届蓝桥杯青少年组省赛] 字符串 题目背景 题目描述 输入格式 输出格式 输入输出样例 第二题&#xff1a;[2021第十二届蓝桥杯…

【Docker】安装Docker环境遇到的坑(VirtualBox)

利用vagrant工具在VirtualBox安装CentOS7环境后&#xff0c;安装Docker环境遇到的坑 前期准备工作 1、卸载原有环境 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engi…

Spire.PDF for .NET【文档操作】演示:创建 PDF 组合

PDF 作品集是一组文件&#xff0c;其中可以包含文本文档、电子表格、电子邮件、图像、PowerPoint 演示文稿和绘图。尽管 PDF 作品集将不同类型的文件组合成一个单元&#xff0c;但其中的每个文件都保留了其原始格式、分辨率和大小。在本文中&#xff0c;您将学习如何使用Spire.…

C#实现数据采集系统-多设备采集

系统功能升级-多设备采集 数据采集系统在网络环境下&#xff0c;性能足够&#xff0c;可以实现1对多采集&#xff0c;需要支持多个设备进行同时采集功能&#xff0c;现在就开发多设备采集功能 修改多设备配置 设备配置 将DeviceLink 改成List集合的DeviceLinks删掉Points&a…

datawind可视化查询-其他函数

飞书文档学习链接:https://www.volcengine.com/docs/4726/47275 1. 用户名函数 用户名函数并非 ClickHouse 官方函数,而是与项目用户信息相结合,用于返回当前使用用户的指定信息的函数。 USERNAME()可返回当前用户的用户名,如下所示。该函数也可与其他函数组合使用 2. J…

Android 应用集成百度地图定位SDK

在当今的移动互联网时代&#xff0c;位置服务已经成为了众多应用不可或缺的功能之一。无论是社交应用中的位置分享&#xff0c;还是服务类应用中的位置导航&#xff0c;都离不开精准的定位技术。为了满足这一需求&#xff0c;越来越多的开发者选择集成第三方的定位SDK。其中&am…

【ARM Hypervisor And SMMU 系列 5 -- SMMU 和 IOMMU技术】

文章目录 SMMU 和 IOMMU技术ARM 的 SMMUTranslation process overviewTBU 和 TCU 的关系TBUTCUTLBSMMU 和 IOMMU技术 文章 讲到了为支持I/O透传机制中的DMA设备传输而引入的IOMMU/SMMU技术,同时留了一个问题:IOMMU/SMMU是否可以同时支持GVA->GPA和GPA->HPA的转换? 答案…

三种相机模型总结(针孔、鱼眼、全景)

相机标定 文章目录 相机标定前言 前言 我们最常见的投影模型Perspective Projection Model描述的就是针孔相机的成像原理。从上面的图根据相似三角形可以得出 参考链接 https://zhuanlan.zhihu.com/p/540969207 相机标定之张正友标定法数学原理详解&#xff08;含python源码&a…

SpingBoot集成kafka发送读取消息

SpingBoot集成kafka开发 kafka的几个常见概念 1、springboot和kafka对应版本&#xff08;重要&#xff09;2、创建springboot项目&#xff0c;引入kafka依赖2.1、生产者EventProducer2.2、消费者EventConsumer2.3、启动生产者的方法SpringBoot01KafkaBaseApplication2.4、appli…

蓝队技能-应急响应篇挖矿病毒系统样本家族威胁情报异常定性排查分析处置封锁

知识点 1、应急响应-挖矿病毒-定性&排查 2、应急响应-挖矿病毒-应急&处置演示案例-蓝队技能-挖矿病毒-样本&定性&排查&应急&处置 挖矿病毒 随着虚拟货币的疯狂炒作&#xff0c;挖矿病毒已经成为不法分子利用最为频繁的攻击方式之一。 可以利用个人电…

[论文笔记]Improving Retrieval Augmented Language Model with Self-Reasoning

引言 今天带来一篇百度提出的关于提升RAG准确率的论文笔记&#xff0c;Improving Retrieval Augmented Language Model with Self-Reasoning。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们"。 检索增强语言模型(Retrie…

你应该停止使用的 7 个已弃用的 Python 库

欢迎来到雲闪世界。升级您的 Python 工具包&#xff1a;发现 7 个应停止使用的过时库以及替代它们的功能。最近&#xff0c;我回顾了 Python 的新特性&#xff0c;发现每个版本都引入了创新&#xff0c;使我们的日常开发工作变得更加轻松。 这让我意识到科技是一门永无止境的艺…

有了这4款工具,你就知道电脑怎么录屏了!

电脑屏幕录屏这个问题很多人都会碰到&#xff0c;比如教学视频录制&#xff0c;游戏技巧分享&#xff0c;软件操作演示等等。因为场景众多&#xff0c;电脑自带的录屏功能不一定能满足&#xff0c;所以借助第三方工具是一个很有效的办法。如果大家不知道如何录屏&#xff0c;可…

I2C学习:上拉电阻选取

一&#xff0e;I2C简介 I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。I2C总线在使用时&#xff0c;需要接上拉电阻&#xff0c;这是因为I2C接口是开漏输出&#xff0c;如图1所示。 图1 I2C开漏输出 I2C有5种速度模式&#xff1a;标准&#xff08;100KHz&am…

在亚马逊云科技上安全、合规地创建AI大模型训练基础设施并开发AI应用服务

项目简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技利用Servi…

就业c++02 随处可见红黑树

通过key来比较节点插入哪个地方 一种key value 另一种顺序执行 比如查找小于50的数字在左面还是在右面 访问那个资源 他的次数是多少构建了 资源key 次数 value 海量的io 过来访问 知道哪一个io 就是key value查找 根据黑色高度的差异 红色节点和红色节点是不相邻的