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 集群时更加得心应手,为企业提供稳定和高效的容器管理服务。

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

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

相关文章

sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)

1. MySQL 条件 数据库用户需要具备高权限&#xff08;如 FILE 权限&#xff09;。数据库服务运行用户需要对目标目录有写权限。Web 服务器有可写目录&#xff0c;且支持执行上传的脚本&#xff08;如 PHP、JSP 等&#xff09;。 原理 利用 MySQL 的 SELECT ... INTO OUTFIL…

Springboot 2.x 升级到Springboot 2.7.x问题汇总

Springboot 2.x 升级到Springboot 2.7.x问题 Springboot 2.x 升级到Springboot 2.7.x问题汇总 不废话 上干货 改变 1.mysql依赖groupId和artifactId更改&#xff1b; <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</…

【计算机网络】实验13:运输层端口

实验13 运输层端口 一、实验目的 本次实验旨在验证TCP和IP运输层端口号的作用&#xff0c;深入理解它们在网络通信中的重要性。通过实验&#xff0c;我将探讨端口号如何帮助区分不同的应用程序和服务&#xff0c;使得在同一台主机上能够同时运行多个网络服务而不发生冲突。此…

【Redis】Redis基础——Redis的安装及启动

一、初识Redis 1. 认识NoSQL 数据结构&#xff1a;对于SQL来说&#xff0c;表是有结构的&#xff0c;如字段约束、字段存储大小等。 关联性&#xff1a;SQL 的关联性体现在两张表之间可以通过外键&#xff0c;将两张表的数据关联查询出完整的数据。 查询方式&#xff1a; 2.…

vuex 是什么?怎么使用?哪种功能场景使用它?

Vuex是Vue.js的状态管理库。它可以用来管理应用程序中的共享状态&#xff0c;并提供了一种集中式的方式来管理状态的变化。 使用Vuex&#xff0c;首先需要安装它&#xff1a; npm install vuex --save然后&#xff0c;在Vue应用程序的入口文件中&#xff0c;导入Vuex并在Vue实…

ElK 8 收集 MySQL 慢查询日志并通过 ElastAlert2 告警至飞书

文章目录 1. 说明2. 启个 mysql3. 设置慢查询4. filebeat 设置5. 触发慢查询6. MySQL 告警至飞书 1. 说明 elk 版本&#xff1a;8.15.0 2. 启个 mysql docker-compose.yml 中 mysql&#xff1a; mysql:# restart: alwaysimage: mysql:8.0.27# ports:# - "3306:3306&q…

PyTorch基本使用-张量的索引操作

在操作张量时&#xff0c;经常要去获取某些元素进行处理或者修改操作&#xff0c;在这里需要了解torch中的索引操作。 准备数据&#xff1a; data torch.randint(0,10,[4,5]) print(data--->,data)输出结果&#xff1a; data---> tensor([[3, 9, 4, 0, 5],[7, 5, 9, …

【服务器监控】grafana+Prometheus+node exporter详细部署文档

我们在进行测试时&#xff0c;不可能一直手动看着服务器的性能消耗&#xff0c;这时候就需要有个工具替我们监控服务器的性能消耗。这里记录下grafanaPrometheusnodeExporter的组合用于监控服务器。 简单介绍&#xff1a; grafana&#xff1a;看板工具&#xff0c;所有采集的…

第十七章 使用 MariaDB 数据库管理系统

1. 数据库管理系统 数据库是指按照某些特定结构来存储数据资料的数据仓库。在当今这个大数据技术迅速崛起的年代&#xff0c;互联网上每天都会生成海量的数据信息&#xff0c;数据库技术也从最初只能存储简单的表格数据的单一集中存储模式&#xff0c;发展到了现如今存储海量…

Jenkins授权策略的配置

简介:在Jenkins中,通过系统管理下的“Manage and Assign Roles”以及“Manage Roles”来配置角色,是实现权限管理的关键步骤。以下是关于这两个功能配置角色时的意义及注意事项的详细解释: 一、配置角色的意义 实现权限控制: 通过创建和分配角色,可以精确地控制不同用户…

centos 7.9 安装jdk1.8 mysql redis等

环境&#xff1a; centos 7.9 1、安装OpenJDK 1.8 步骤 1: 更新系统 首先&#xff0c;确保你的系统是最新的&#xff0c;执行以下命令来更新所有软件包&#xff1a; sudo yum update -y步骤 2: 安装 OpenJDK 1.8 CentOS 7 默认的包管理器是 yum&#xff0c;你可以通过以下命…

计算机键盘的演变 | 键盘键名称及其功能 | 键盘指法

注&#xff1a;本篇为 “键盘的演变及其功能” 相关几篇文章合辑。 英文部分机翻未校。 The Evolution of Keyboards: From Typewriters to Tech Marvels 键盘的演变&#xff1a;从打字机到技术奇迹 Introduction 介绍 The keyboard has journeyed from a humble mechanical…

Methods and Initializers

1 Method Declarations 这回不从comipler开始&#xff0c;从runtime开始。 GC也需要follow 接下来难点在于如何填充这些表 2 Compiling method declarations 难点&#xff1a; 一个类可以声明任意数量的方法。运行时需要查找并绑定所有这些方法。如果将这些方法都打包到一条…

飞飞5.4游戏源码(客户端+服务端+工具完整源代码+5.3fix+5.4patch+数据库可编译进游戏)

飞飞5.4游戏源码&#xff08;客户端服务端工具完整源代码5.3fix5.4patch数据库可编译进游戏&#xff09; 下载地址&#xff1a; 通过网盘分享的文件&#xff1a;【源码】飞飞5.4游戏源码&#xff08;客户端服务端工具完整源代码5.3fix5.4patch数据库可编译进游戏&#xff09; 链…

开源C代码之路:一、Gitee

开源c代码之路&#xff1a;一&#xff0c;Gitee 前言1、开源项目2、从哪里找&#xff1f;3、举个例子4、总结&#xff1a; 本系列回顾清单开源代码示例 前言 从开源开发的角度&#xff0c;由浅入深&#xff0c;一步步初探C语言编程的入门之路。 本篇讲解&#xff1a;Gitee 1…

基于协同过滤算法的宠物用品商城的设计与实现(计算机毕业设计)Java Spring 衍生为任何商城系统 毕业论文

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 IDE环境&#xff1a; Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境&#xff1a; Tomcat 7.x,8.x,9.x版本均可 操作系统…

算法-字符串-165.比较版本号

一、题目 二、思路解析 1.思路&#xff1a; 比较的是两个版本号它们以“.”作为分割的部分的有效值&#xff08;即数值&#xff09;是否一致 2.常用方法&#xff1a; 1.s.split("\\规则")&#xff0c;将字符串按参数规则进行分割并存储在字符串数组中 String[] str …

MySQL(四)--索引

MySQL的服务器,本质是在内存中的,那么所有对数据的CURD操作,全都是在对内存进行操作。 而,提高数据的CURD操作的效率,有两种方式:1、组织数据的格式(数据结构);2、算法。 而,数据结构,就是索引,即组织数据的格式。 1、没有索引的问题 索引:提高数据库的性能,索…

C# (WinForms) 使用 iTextSharp 库将图片转换为 PDF

iTextSharp简介 iTextSharp 是一个开源的 .NET 库&#xff0c;主要用于创建和操作 PDF 文档。它是 iText 的 .NET 版本&#xff0c;iText 是一个广泛使用的 Java 库。iTextSharp 继承了 iText 的核心功能并进行了适应 .NET 平台的调整。 iTextSharp 的主要功能包括&#xff1a…

ubuntu防火墙设置(四)——iptables语法与防火墙基础配置

前面介绍的ufw和firewall-config均为iptables的前端&#xff0c; 分别适合个人用户和服务器网络管理 下面介绍底层——ipables iptables是一个强大的工具&#xff0c;用于配置Linux系统的防火墙。以下是一些基本的使用方法和示例&#xff0c;帮助您入门&#xff1a; 基本语法 …