Kubectl命令、初识pod、namespace

news2024/11/28 2:42:03

文章目录

  • 一、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.coloradmin.cn/o/2060446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【案例52】oracle进程占用CPU100%分析实战

问题现象 Linux环境&#xff0c;数据库CPU一直处于100%。业务系统运行很慢。Top命令结果如下&#xff1a; 问题分析 方法1 根据上图中的oracle进程在操作系统对应的 PID号 : 如 6999,8100 等 通过下面的SQL,查询 select s.SQL_HASH_VALUE, s.SQL_ADDRESSfrom v$session …

PCB线宽和线间距设计PCB抄板

尽量加宽电源、地线宽度&#xff0c;最好是地线比电源线宽&#xff0c;它们的关系是&#xff1a;地线>电源线>信号线&#xff0c;通常信号线宽&#xff1a;0.2~0.3mm&#xff0c;最细宽度可达到0.05~0.07mm&#xff0c;电源线宽为1.2~2.5mm 一般宽度不宜小于0.2mm(8mi…

鹭鹰优化算法SBOA优化RBF神经网络的扩散速度实现多数入多输出数据预测,可以更改数据集(MATLAB代码)

一、鹭鹰优化算法介绍 鹭鹰优化算法&#xff08;Secretary Bird Optimization Algorithm, SBOA&#xff09;是一种新型的元启发式算法&#xff0c;它于2024年4月由Youfa Fu等人提出&#xff0c;并发表在SCI人工智能二区顶刊《Artificial Intelligence Review》上。该算法的灵感…

【机器学习】神经网络简介以及如何用Tensorflow构建一个简单的神经网络

引言 神经网络是一种模拟人脑神经元连接和工作方式的计算模型&#xff0c;它是深度学习的基础&#xff0c;并在机器学习领域中扮演着重要角色 文章目录 引言一、神经网络简介1.1 结构组成1.2 工作原理1.3 学习过程1.4 应用领域1.5 感知器1.6 功能特点1.7 总结 二、用Tensorflow…

根据 Web 服务器端的架构相关知识,将PHP改JAVA重构企业网站系统

目录 案例 【题目】 【问题 1】(7 分) 【问题 2】(8 分) 【问题 3】(10 分) 答案 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于应用服务器的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 某电子产品制造公司&#xff0c…

现有electron-quick-start把vue项目打包后的dist打包exe自定义最小化点击事件

1.preload.js里暴露接口 const { contextBridge, ipcRenderer } require(electron) contextBridge.exposeInMainWorld(electronAPI, {WindowMin: (data) > {ipcRenderer.send(window-min, data);} });2.vue文件处理 if(window.electronAPI){window.electronAPI.WindowMi…

12/24/30v/36转固定5v输出芯片

设计电源芯片的应用方案时&#xff0c;必须保证输入电压在DC6V至30V范围内&#xff0c;输出电压为固定的5V&#xff0c;同时电流需在200至300mA之间。在这种需求下&#xff0c;推荐使用AH1405芯片&#xff0c;因其输入电压范围宽&#xff08;6-40V&#xff09;&#xff0c;内置…

正则表达式——详解

正则表达式是什么&#xff1f; 正则表达式&#xff08;Regular Expression&#xff0c;通常简写为 regex、regexp 或 RE&#xff09;是一种强大的文本处理工具&#xff0c;用于描述一组字符串的模式。它可以用来匹配、查找、替换等操作&#xff0c;几乎所有现代编程语言都支持…

【精选】基于Python的热门旅游景点数据分析系统的设计与实现(南京旅游,北京旅游,旅游网站,全国各地旅游网站)

目录&#xff1a; 系统简介&#xff1a; 关键技术介绍 2.1 PYTHON语言简介 2.2 MySql数据库 2.3 DJANGO框架 2.4 Hadoop介绍 2.5 Scrapy介绍 2.6 B/S架构 系统总功能结构设计 系统详细实现&#xff1a; 6系统测试 系统测试的目的 软件测试过程 测试用例 为什么选择…

学习之nodejs安装

安装地址 https://nodejs.org/en/download/package-manager 安装 配置环境变量

【网络编程】select实现服务器与客户端进行通信

1、运行1个服务器和2个客户端 实现效果: 1、服务器和2个客户端互相聊天&#xff0c;服务器和客户端都需要使用select模型去实现 2、服务器要监视2个客户端是否连接&#xff0c;2个客户端是否发来消息&#xff0c;以及服务器自己的标准输入流 3、客户端…

20240821让飞凌的OK3588-C的核心板在Linux R4下挂载1TB的exFAT格式的TF卡

fdisk -l df -h df -t df -T mount 20240821让飞凌的OK3588-C的核心板在Linux R4下挂载1TB的exFAT格式的TF卡 2024/8/21 19:47 百度&#xff1a;rk3588 buildroot exFAT mount: mounting /dev/mmcblk1p1 on /mnt failed: Invalid argument Disk /dev/mmcblk1: 955 GB, 10254234…

高性能日志系统 代理模式构建全局日志器获取接口

日志器获取接口 通过两个函数&#xff0c;用于获取指定名称的日志器和root日志器。两个函数分别通过调用loggerManager的getInstance方法&#xff0c;获取单例的日志管理器对象&#xff0c;通过这种方式&#xff0c;借助日志管理器获取具体的日志器对象。 设计的主要目的&…

Nginx平滑升级与回滚示例

Nginx 的平滑升级和平滑回滚是确保 Web 服务高可用性的重要组成部分。这两种操作允许你在不中断服务的情况下更新或回滚 Nginx 的版本。 Nginx 平滑升级与回滚 Nginx 的平滑升级和平滑回滚是确保 Web 服务高可用性的重要组成部分。这两种操作允许你在不中断服务的情况下更新或…

m4a格式音频怎么转成mp3?音频转成mp3的8个方法

在结束关于M4A转MP3格式转换的探讨之际&#xff0c;我们不得不强调这一转换过程对于提升音频文件灵活性和可访问性的重要意义。随着数字媒体的日益普及&#xff0c;音频文件的格式兼容性成为了不可忽视的一环。特别是在一个多元化设备和平台共存的数字时代&#xff0c;确保音频…

虚拟滚动列表组件ReVirtualList

虚拟滚动列表组件ReVirtualList 组件实现基于 Vue3 Element Plus Typescript&#xff0c;同时引用 vueUse lodash-es tailwindCss (不影响功能&#xff0c;可忽略) 在 ReList 的基础上&#xff0c;增加虚拟列表功能&#xff0c;在固定高度的基础上&#xff0c;可以优化大数…

稳定、耐用、美观 一探究竟六角头螺钉螺栓如何选择

在机器与技术未被发现的过去&#xff0c;紧固件设计和品质并不稳定。但是&#xff0c;他们已成为当今许多行业无处不在的构成部分。六角头标准件或六角头标准件是紧固件中持续的头部设计之一&#xff0c;它有六个面&#xff0c;对广泛工业应用大有益处。六角头标准件或常分成六…

animatecss动画效果

1. 官网 https://animatecss.node.org.cn/ 2. 安装 npm install animate.css --save 使用时需要在vue中引入&#xff1a;import "animate.css;与内置组件配合使用&#xff1a; <Transition>Vue官网链接如果按照animatecss官网的用法,则只能指定进入或退出其中一…

L2G: A Simple Local-to-Global Knowledge Transfer Framework for WSSS

摘要 挖掘精确的类感知注意图&#xff0c;即类激活图&#xff0c;是弱监督语义分割的关键。在本文中&#xff0c;我们提出了L2G&#xff0c;一个用于高质量对象注意力挖掘的简单的在线局部到全局知识转移框架。我们观察到&#xff0c;当用局部补丁替换输入图像时&#xff0c;分…

汽车的UDS诊断02

UDS的不同服务: 1)物理寻址和功能寻址 can总线上往往有多个ECU,诊断设备可以和某个ECU通信,也可以和多个ECU通信,通过物理寻址和功能寻址来解决这个问题,只针对请求报文: 物理寻址:就是诊断仪与ECU之间点对点通信 功能寻址:就是诊断仪与多个ECU之间一对多信 我们的…