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

Kubernetes 常用操作大全:全面掌握 K8s 基础与进阶命令

Kubernetes(简称 K8s)作为一种开源的容器编排工具,已经成为现代分布式系统中的标准。它的强大之处在于能够自动化应用程序的部署、扩展和管理。在使用 Kubernetes 的过程中,熟悉常用操作对于高效地管理集群资源至关重要。本文将详细介绍 Kubernetes 的各种常用操作,帮助你在管理集群时应对各种场景。

目录

  1. Kubernetes 基本概念
  2. 集群操作
    • 查看节点信息
    • 管理节点
  3. Pod 的基本操作
    • 创建 Pod
    • 查看 Pod
    • 删除 Pod
  4. Service 操作
    • 创建 Service
    • 查看 Service
  5. Deployment 的操作
    • 创建 Deployment
    • 更新和回滚 Deployment
    • 缩容和扩容 Deployment
  6. 使用 ConfigMap 和 Secret
  7. 管理 Namespaces
  8. Helm 基本操作
  9. Kubernetes 日常排错与调试
  10. 小结

1. Kubernetes 基本概念

Kubernetes 是用于自动部署、扩展和管理容器化应用程序的平台。它包括以下核心概念:

  • Node:Kubernetes 集群中的一个节点(物理或虚拟机)。
  • Pod:Kubernetes 中最小的部署单元,一个 Pod 通常包含一个或多个容器。
  • Service:用于将请求路由到 Pod 的负载均衡器。
  • Deployment:用于声明和管理应用的部署方式。

2. 集群操作

2.1 查看节点信息

要查看 Kubernetes 集群中所有节点的信息,可以使用以下命令:

kubectl get nodes
  • 显示集群中所有节点的状态和相关信息。
2.2 管理节点
  • 标记节点:可以为节点添加标记,以便调度器做出调度决策。例如:

    kubectl label nodes <node-name> disktype=ssd
    
  • 污点节点:标记节点为不可调度,防止新的 Pod 被调度到该节点上:

    kubectl taint nodes <node-name> key=value:NoSchedule
    

3. Pod 的基本操作

3.1 创建 Pod

可以通过编写 YAML 文件或直接使用命令创建 Pod。以下是通过 YAML 创建 Pod 的示例文件 pod.yaml

apiVersion: v1
kind: Pod
metadata:name: nginx-podlabels:app: nginx
spec:containers:- name: nginximage: nginx:1.21ports:- containerPort: 80

使用以下命令应用 YAML 文件:

kubectl apply -f pod.yaml
3.2 查看 Pod
  • 列出所有 Pod

    kubectl get pods
    
  • 获取 Pod 的详细信息

    kubectl describe pod <pod-name>
    
3.3 删除 Pod

要删除一个 Pod,可以使用 delete 命令:

kubectl delete pod <pod-name>

4. Service 操作

4.1 创建 Service

Service 允许不同 Pod 之间相互通信,或暴露应用程序以供外部访问。以下是创建一个 ClusterIP 类型 Service 的 YAML 文件 service.yaml

apiVersion: v1
kind: Service
metadata:name: nginx-service
spec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: ClusterIP

使用以下命令应用 YAML 文件:

kubectl apply -f service.yaml
4.2 查看 Service
  • 列出所有 Service

    kubectl get services
    
  • 查看特定 Service 的详细信息

    kubectl describe service <service-name>
    

5. Deployment 的操作

5.1 创建 Deployment

Deployment 是用于管理应用程序的声明式更新。以下是创建一个 Nginx Deployment 的 YAML 文件 deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.21ports:- containerPort: 80

使用以下命令创建 Deployment:

kubectl apply -f deployment.yaml
5.2 更新和回滚 Deployment
  • 滚动更新

    kubectl set image deployment/nginx-deployment nginx=nginx:1.22
    
  • 回滚 Deployment

    kubectl rollout undo deployment/nginx-deployment
    
5.3 缩容和扩容 Deployment
  • 扩容至 5 个副本

    kubectl scale deployment/nginx-deployment --replicas=5
    

6. 使用 ConfigMap 和 Secret

ConfigMapSecret 用于管理配置数据和敏感信息。

  • 创建 ConfigMap

    kubectl create configmap my-config --from-literal=key1=value1
    
  • 创建 Secret

    kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secret
    

7. 管理 Namespaces

Namespaces 用于将集群中的资源分隔开,以便更好地管理和隔离。

  • 查看所有 Namespaces

    kubectl get namespaces
    
  • 创建 Namespace

    kubectl create namespace mynamespace
    
  • 删除 Namespace

    kubectl delete namespace mynamespace
    

8. Helm 基本操作

Helm 是 Kubernetes 的包管理工具,用于简化应用的部署。

  • 安装 Chart

    helm install my-release stable/nginx
    
  • 列出所有 Release

    helm list
    
  • 卸载 Release

    helm uninstall my-release
    

9. Kubernetes 日常排错与调试

  • 查看 Pod 日志

    kubectl logs <pod-name>
    
  • 进入 Pod 进行调试

    kubectl exec -it <pod-name> -- /bin/bash
    
  • 查看事件:查看集群中的所有事件,以排查可能的问题。

    kubectl get events
    

10. 小结

本文详细介绍了 Kubernetes 的各种常用操作,从基础的 节点管理Pod 操作,到进阶的 Deployment 管理Service 配置ConfigMap 和 Secret 使用,以及 Helm 的基本用法。掌握这些操作,能够帮助开发者和运维人员在日常工作中更加高效地管理 K8s 集群。

Kubernetes 的丰富功能使得容器编排变得高效而灵活,但也对用户提出了更高的要求。熟练使用这些操作命令,可以让你在日常维护和调试 Kubernetes 集群时更加得心应手,为企业提供稳定和高效的容器管理服务。

相关文章:

Kubernetes 常用操作大全:全面掌握 K8s 基础与进阶命令

Kubernetes&#xff08;简称 K8s&#xff09;作为一种开源的容器编排工具&#xff0c;已经成为现代分布式系统中的标准。它的强大之处在于能够自动化应用程序的部署、扩展和管理。在使用 Kubernetes 的过程中&#xff0c;熟悉常用操作对于高效地管理集群资源至关重要。本文将详…...

爬虫基础之Web网页基础

网页的组成 网页可以分为三大部分–HTML、CSS 和 JavaScript。如果把网页比作一个人&#xff0c;那么 HTML 相当于骨架、JavaScript 相当于肌肉、CSS 相当于皮肤&#xff0c;这三者结合起来才能形成一个完善的网页。下面我们分别介绍一下这三部分的功能。 HTML HTML(Hypertext…...

k8s, deployment

控制循环&#xff08;control loop&#xff09; for {实际状态 : 获取集群中对象X的实际状态&#xff08;Actual State&#xff09;期望状态 : 获取集群中对象X的期望状态&#xff08;Desired State&#xff09;if 实际状态 期望状态{什么都不做} else {执行编排动作&#xf…...

使用ensp搭建OSPF+BGP和静态路由,底层PC使用dhcp,实现PC互通

1.4种方式&#xff0c;实现PC2可以互通底层的所有设备 OSPF&#xff1a;OSPF是一种用于互联网协议网络的链路状态路由协议 BGP&#xff1a;是一种用于互联网上进行路由和可达性信息传递的外部网关协议&#xff08;EGP&#xff09; 静态路由&#xff1a; 静态路由是一种路由方…...

TÜLU 3: Pushing Frontiers in Open Language Model Post-Training

基本信息 &#x1f4dd; 原文链接: https://arxiv.org/abs/2411.15124&#x1f465; 作者: Nathan Lambert, Jacob Morrison, Valentina Pyatkin, Shengyi Huang, Hamish Ivison, Faeze Brahman, Lester James V. Miranda, Alisa Liu, Nouha Dziri, Shane Lyu, Yuling Gu, Sau…...

深入解读 MySQL EXPLAIN 与索引优化实践

MySQL 是当今最流行的关系型数据库之一&#xff0c;为了提升查询性能&#xff0c;合理使用 EXPLAIN 工具和优化索引显得尤为重要。本文将结合实际示例&#xff0c;探讨如何利用 EXPLAIN 分析查询执行计划&#xff0c;并分享索引优化的最佳实践。 一、EXPLAIN 工具简介 EXPLAIN …...

Flume——进阶(agent特性+三种结构:串联,多路复用,聚合)

目录 agent特性ChannelSelector描述&#xff1a; SinkProcessor描述&#xff1a; 串联架构结构图解定义与描述配置示例Flume1&#xff08;监测端node1&#xff09;Flume3&#xff08;接收端node3&#xff09;启动方式 复制和多路复用结构图解定义描述配置示例node1node2node3启…...

ragflow连ollama时出现的Bug

ragflow和ollama连接后&#xff0c;已经添加了两个模型但是ragflow仍然一直warn&#xff1a;Please add both embedding model and LLM in Settings &#xff1e; Model providers firstly.这里可能是我一开始拉取的镜像容器太小&#xff0c;容不下当前添加的模型&#xff0c;导…...

基于centos7.7编译Redis6.0

背景&#xff1a; OS&#xff1a;CentOs 7.7 Redis: 6.0.6 编译构建报错如下&#xff1a; In file included from server.c:30:0: server.h:1044:5: error: expected specifier-qualifier-list before ‘_Atomic’_Atomic unsigned int lruclock; /* Clock for LRU eviction …...

uni-app项目无法在Android Studio模拟器上运行

目录 1 问题描述2 尝试解决3 引发原因4 解决方法4.1 换用 MuMu 模拟器 5 结语 1 问题描述 在使用 uni-app 开发 Pad 端 App 时&#xff0c;初始化项目后打算先运行一下确保初始化正常。打开 Android Studio 模拟器后&#xff0c;然后在 HbuilderX 中选择使用 App 标准基座 运…...

第一部分:Linux系统(基础及命令)

Linux操作系统的实操性非常强&#xff0c;纯操作&#xff0c;不适用于日常的办公使用 1.初始Linux 1.1 操作系统概述 1.1.1 了解OS的作用 OS&#xff1a;是计算机软件的一种&#xff0c;主要负责&#xff1a;作为用户和计算机硬件之间的桥梁&#xff0c;调度和管理计算机硬…...

No module named ‘_ssl‘ No module named ‘_ctypes‘

如果你使用的是基于 yum 的 Linux 发行版&#xff08;例如 CentOS、RHEL、Fedora&#xff09;&#xff0c;安装 libc6-dev 的方式稍有不同。在这些系统中&#xff0c;通常对应的包是 glibc-devel。 No module named ‘_ctypes’ 使用 yum 安装 glibc-devel 更新系统的软件包列…...

【QT】编写第一个 QT 程序 对象树 Qt 编程事项 内存泄露问题

目录 1. 编写第一个 QT 程序 1.1 使用 标签 实现 &#x1f407; 图形化界面实现 &#x1f407; 纯代码形式实现 1.2 使用 按钮 实现 &#x1f40b; 图形化界面实现 &#x1f40b; 纯代码形式实现 1.3 使用 编辑框 实现 &#x1f95d; 图形化界面实现 &#x1f95…...

VTK编程指南<六>:VTK可视化管线与渲染详解

1、VTK渲染引擎 回顾前几章节的RenderCylinder示例 可以找到以下的类: vtkProp; ytkAbstractMapper; vtkProperty; vtkCamera; vtkLight; vtkRenderer; vtkRenderWindow; vtkRenderWindowInteractor vtkTransform; vtkLookupTable;可以发现这些类都是与数据显示或渲染相关的。…...

基于STM32的智能计步器

引言 随着健康意识的提高&#xff0c;计步器逐渐成为人们日常生活中重要的健康管理工具。本文将指导你如何使用STM32微控制器制作一个智能计步器。该计步器通过加速度传感器检测步伐&#xff0c;并使用OLED显示屏显示步数。通过这个项目&#xff0c;你将学习到STM32开发的基本流…...

VB.NET 从入门到精通:开启编程进阶之路

摘要&#xff1a; 本文全面深入地阐述了 VB.NET 的学习路径&#xff0c;从基础的环境搭建与语法入门开始&#xff0c;逐步深入到面向对象编程、图形用户界面设计、数据访问、异常处理、多线程编程以及与其他技术的集成等核心领域&#xff0c;通过详细的代码示例与理论讲解&…...

射频电路屏蔽简略

电磁波的干扰是每个射频设备的自带属性&#xff0c;不管是内部还是外部&#xff0c;怎样去更好的抑制掉干扰&#xff0c;关系到射频设备的工作状态&#xff0c;而能够找到产生干扰的来源就是重中之重&#xff0c;电磁波的干扰与其产生的源密不可分&#xff0c;而源就离不开所需…...

基础算法——搜索与图论

搜索与图论 图的存储方式2、最短路问题2.1、Dijkstra算法&#xff08;朴素版&#xff09;2.2、Dijkstra算法&#xff08;堆优化版&#xff09;2.3、Bellman-Ford算法2.4、SPFA求最短路2.5、SPFA判负环2.6、Floyd算法 图的存储方式 2、最短路问题 最短路问题可以分为单源最短路…...

redis优化编码之字符串

redis 优化编码之字符串 ### 字符串优化 字符串对象是redis内部最常用的数据类型。 所有的键是字符串对象值对象除了整数之外都是使用字符串存储lpush cache:type "redis" "tair" "memcache" "leveldb"创建如上一个链表 需要创建一…...

Python特定版本的安装/卸载/环境配置,Spyder安装教程

目录 1.Python安装 1.1 Python下载 1.2 下载特定版本 1.3 安装Python 1.4 修改安装 1.5 环境配置 1.6 卸载Python 2.Spyder安装使用 2.1 Spyder下载 2.1.1 官网下载Spyder 2.2.2 Github下载Spyder 2.2 安装 参考资料&#xff1a;网盘 1.Python安装 1.1 Python下载…...

保姆级教程:用Forge 1.16.3给你的Minecraft服务器装Mod,从下载到联机全流程

保姆级教程&#xff1a;用Forge 1.16.3给你的Minecraft服务器装Mod&#xff0c;从下载到联机全流程 和朋友一起玩Minecraft原版生存久了&#xff0c;难免会想尝试更多新玩法。Mod能为游戏带来全新生物、装备、魔法系统甚至维度冒险&#xff0c;但很多玩家在搭建Mod服务器时会被…...

LeRobot:开源机器人学习的终极指南 - 从零到真实世界的AI机器人控制

LeRobot&#xff1a;开源机器人学习的终极指南 - 从零到真实世界的AI机器人控制 【免费下载链接】lerobot &#x1f917; LeRobot: Making AI for Robotics more accessible with end-to-end learning 项目地址: https://gitcode.com/GitHub_Trending/le/lerobot LeRobo…...

基于Ollama与OpenClaw框架,在Ubuntu VPS上部署私有AI助手

1. 项目概述与核心价值最近在折腾一个挺有意思的东西&#xff0c;叫OpenClaw。简单来说&#xff0c;它是一个开源的AI智能体&#xff08;Agent&#xff09;框架&#xff0c;能让你自己部署一个功能丰富的AI助手。这玩意儿最吸引我的地方在于&#xff0c;它能和本地的Ollama大语…...

如何在Chrome浏览器中快速生成与扫描二维码:终极免费插件指南

如何在Chrome浏览器中快速生成与扫描二维码&#xff1a;终极免费插件指南 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件&#xff0c;用于生成当前URL或者选中内容的二维码&a…...

数说故事解读AI品牌心智:让品牌被AI看见、推荐与信任

当AI全面进入商业决策、智能体成为企业标配&#xff0c;品牌增长逻辑正在发生底层重构&#xff1a;品牌不再只是面对消费者&#xff0c;更需要被AI识别、理解、推荐与信任。数说故事在2026 D3智慧增长大会上提出全新观点——AI品牌心智&#xff0c;将成为AI共生时代品牌最重要的…...

Arm CoreLink CMN-600硬件错误解析与解决方案

1. Arm CoreLink CMN-600硬件错误深度解析在复杂SoC设计中&#xff0c;互连架构的质量直接决定整个系统的稳定性和性能。作为Arm Neoverse平台的核心组件&#xff0c;CoreLink CMN-600&#xff08;Coherent Mesh Network&#xff09;承担着处理器集群、内存控制器和I/O设备之间…...

LocalClaw:一键部署本地AI工作站,简化macOS大模型环境搭建

1. 项目概述&#xff1a;LocalClaw macOS 安装器 如果你是一名在 Apple Silicon Mac 上折腾本地大语言模型的开发者或爱好者&#xff0c;那么对 LM Studio 和 OpenClaw 这两个名字一定不陌生。前者是一个强大的本地 LLM 运行和管理工具&#xff0c;后者则是一个开源的、类 Chat…...

Anaconda环境翻车实录:从‘CondaMemoryError’到完美恢复的完整指南

Anaconda环境崩溃自救手册&#xff1a;从诊断到彻底修复的实战指南 那天下午&#xff0c;当你在终端第15次尝试运行conda update --all时&#xff0c;屏幕上突然跳出鲜红的"CondaMemoryError"字样&#xff0c;整个开发环境瞬间陷入瘫痪。这不是普通的报错&#xff0c…...

开源浏览器扩展SubLens:集中管理AI订阅账单,告别遗忘扣费

1. 项目概述&#xff1a;一个浏览器扩展&#xff0c;帮你管好AI订阅账单 不知道你有没有这种感觉&#xff0c;每个月信用卡账单出来的时候&#xff0c;总有几个“熟悉的陌生人”——那些你为了尝鲜或者工作需要而订阅的AI服务&#xff0c;比如ChatGPT Plus、Claude Pro、GitHub…...

DDSP与神经音频合成:AI如何复刻经典合成器音色

1. 项目概述&#xff1a;当AI遇见经典合成器如果你和我一样&#xff0c;是个对复古合成器声音着迷&#xff0c;同时又对现代AI技术充满好奇的音乐制作人或开发者&#xff0c;那么最近在GitHub上出现的martinic/DrMixAISynth项目&#xff0c;绝对值得你花上一个下午的时间好好研…...