【kubernetes】陈述式资源管理的kubectl命令合集

目录

前言

一、K8s 资源管理操作方式

1、声明式资源管理方式

2、陈述式资源管理方式

二、陈述式资源管理方式

1、kubectl 命令基本语法

2、查看基本信息

2.1 查看版本信息

2.2 查看资源对象简写

2.3 配置kubectl命令自动补全

2.4 查看node节点日志

2.5 查看集群信息

3、查看资源的基本信息

3.1 查看集群组件状态

3.2 查看命名空间

3.3 查看命名空间中的资源

3.4 查看资源详细信息

3.5 查看特定命名空间中所有部署的信息

3.6 查看资源标签信息

3.6.1 查看存在资源的标签

3.6.2 查看指定标签中含有的资源

3.6.3 查看标签中指定的资源

4、创建和删除命名空间

4.1 创建命名空间

4.2 删除命名空间

5、创建、登录和删除 pod 实例

5.1 创建 pod 实例

5.2 跨主机登录容器

5.3 删除 pod 实例

6、扩容与缩容

6.1 扩容

6.2 缩容

三、项目的生命周期

1、 创建 kubectl create 命令

2、发布 kubectl expose 命令

2.1 Service 的概念

2.2 将资源暴露为新的 Service

2.3 负载均衡效果

3、更新版本 kubectl set(滚动发布)

3.1 查看版本更新策略

3.2 版本更新过程

3.3 版本更新

4、回滚 kubectl rollout

4.1 查看历史版本

4.2 执行回滚到上一个版本

4.3 执行回滚到指定版本

4.4 检查回滚状态 

5、删除 kubectl delete

5.1 删除副本控制器

5.2 删除 service

 ​​​​四、项目更新发布方式

1、蓝绿发布

2、滚动发布

3、灰度发布(金丝雀发布)

3.1 暂停更新

3.2 pod 隔离

3.2.1 修改新service的关联节点

3.2.1 修改旧service的关联节点

3.3 测试 pod 隔离效果

3.4 恢复更新

3.5 测试是否更新为新版本

五、总结

1、陈述式资源管理方式

2、项目的生命周期

3、项目更新发布方式


前言

本合集旨在提供一个全面的kubectl命令合集,帮助您更好地理解和使用Kubernetes中的陈述式资源管理。Kubernetes是一个强大的容器编排平台,而资源管理是其中至关重要的一部分。通过使用kubectl命令,您可以轻松地创建、更新和删除各种资源,以及查看它们的状态

陈述式资源管理是一种通过定义所需状态来实现自动化管理的方法。通过使用kubectl命令,您可以将集群状态与所需状态保持一致,从而简化管理过程,提高可靠性和可维护性

本合集将介绍各种kubectl命令,包括创建、更新、删除资源,以及查看资源状态等。我们鼓励您通过学习和掌握这些命令,以便能够更有效地管理和操作Kubernetes集群

一、K8s 资源管理操作方式

1、声明式资源管理方式

  • 概念

声明式管理是指通过定义所需的状态,让Kubernetes自动将集群状态与所需状态保持一致的管理方式。用户只需描述所需的最终状态,而不需要关心实现的具体步骤

  • 操作方式

用户通过编写YAML文件来描述资源对象的配置和规范。然后使用kubectl apply命令将这些YAML文件应用到集群中,Kubernetes会根据文件中定义的状态进行操作,确保集群达到所需状态

2、陈述式资源管理方式

  • 概念

① kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口

② kubectl 是官方的CLI命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为 apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径

③ 陈述式资源管理是指通过直接给出操作指令来管理资源的方式。用户需要明确指定每个操作的具体步骤,包括创建、更新、删除等。

  • 操作方式

用户通过kubectl命令直接操作资源对象,例如使用kubectl create、kubectl apply、kubectl delete等命令来创建、更新、删除资源。用户需要逐步指定每个操作的参数和选项。

二、陈述式资源管理方式

1、kubectl 命令基本语法

kubectl命令的语法如下
kubectl [command] [type] [name] [flags]
 
comand   #指定要对资源执行的操作,例如create、 get、delete
type     #指定资源类型,比如deployment、pod、 service
name     #指定资源的名称,名称大小写敏感
flags    #指定额外的可选参数
kubectl --help    #可查询 kubectl 命令的用法
k8s中文文档:http://docs.kubernetes.org.cn/683.html

2、查看基本信息

命令

说明

kubectl version 查看版本信息
kubectl api-resources 查看资源对象简写
journalctl -u kubelet -f   node节点查看日志
source <(kubectl completion bash) 配置kubectl自动补全
kubectl cluster-info 查看集群信息

2.1 查看版本信息

kubectl version

2.2 查看资源对象简写

kubectl api-resources

注:

  • NAME:资源类型全拼

  • SHORTNAMES :简写

  • APIVERSION :资源所属的 API 版本

  • NAMESPACED :是否支持命名空间,true表示支持,false表示不支持

  • KIND :资源的类型或种类

services与svc表示同一个指令,svc是services的简写

2.3 配置kubectl命令自动补全

配置kubectl自动补全,使用source <(kubectl completion bash)指令,执行此命令后,可以使用tab键,在kubectl进行资源操作时进行补全

[root@master ~]#source <(kubectl completion bash)
 
#可以将此命令加入开机自行加载的文件。如$HOME/.bashrc文件、/etc/profile文件

2.4 查看node节点日志

journalctl -u kubelet -f

2.5 查看集群信息

kubectl cluster-info

3、查看资源的基本信息

命令

说明

kubectl get <resource_type> [-o wide|json|yaml] [-n namespace] 获取指定类型的资源信息,如kubectl get pods获取所有Pod信息。-n 指定命令空间 -o 指定输出格式
kubectl describe <resource_type> <resource_name> 显示指定资源的详细信息
kubectl explain <resource>: 获取关于资源或资源字段的文档
#获取资源的相关信息,-n 指定命令空间,-o 指定输出格式
kubectl get <resource> [-o wide|json|yaml] [-n namespace]

#resource可以是具体资源名称,如pod nginx-xxx;也可以是资源类型,如pod;或者all(仅展示几种核心资源,并不完整)
#--all-namespaces 或 -A :表示显示所有命令空间,
#--show-labels :显示所有标签
#-l app :仅显示标签为app的资源
#-l app=nginx :仅显示包含app标签,且值为nginx的资源

3.1 查看集群组件状态

kubectl get componentstatuses
 
简写:
kubectl get cs

注:

  • NAME:集群中的组件名称
  • STATUS:组件的健康状态,通常是 "Healthy" 或 "Unhealthy"
  • MESSAGE:提供了关于组件状态的额外信息,通常是一个简单的 "ok" 或更详细的消息
  • ERROR:在组件不健康时可能会显示错误详情,但在健康时通常为空。 

3.2 查看命名空间

kubectl get namespace

简写:
kubectl get ns
 
#Kubernetes 使用命名空间来将集群中的资源划分到不同的逻辑组中
#在同一个命名空间当中,不允许有相同名称的资源信息,但是在不同的命名空间中可以创建
#默认的命名空间是 "default",但通常还有其他命名空间,如 "kube-system"(用于 Kubernetes 系统组件)和用户自定义的命名空间

注:

  • NAME:命名空间的名称
  • STATUS:命名空间的当前状态,通常是 "Active",表示命名空间是活动的并且可用
  • AGE:命名空间自创建以来的时长 

3.3 查看命名空间中的资源

(1)查看某一命名空间具体的某一资源信息 

#查看命名空间 kube-system 中的pod资源
kubectl get pod -n kube-system

#查看命名空间 kube-system 中的pod资源的详细信息
kubectl get pod -n kube-system -owide

(2) 查看某一命名空间所有的资源

#查看命名空间 kube-system 中的所有资源,all代表所有类型的资源
kubectl get all -n kube-system

(3)查看所有命名空间中的资源

kubectl get all -A
#--all-namespaces 或 -A :表示显示所有命名空间

3.4 查看资源详细信息

kubectl describe <资源类型>  <资源名称>  [-n 命名空间]

<资源类型>     #描述的资源的类型,比如 pod、service、deployment、statefulset 等
<资源名称>     #你想要描述的资源的名称
[-n 命名空间]  #可选参数,指定资源所在的命名空间。不指定则为当前默认命名空间,通常是default
 
#kubectl describe是Kubernetes命令行工具kubectl的一个命令,用于获取关于指定资源的详细信息
#当你想要深入了解某个资源的状态时(比如它的配置、事件、容器日志等),这个命令会非常有用
#查看命名空间 kube-system 中名称为 etcd-master 的 pod 资源详细信息
kubectl describe pod etcd-master -n kube-system

#查看默认命名空间中 default 名称为 kubernetes 的 service 资源详细信息
kubectl describe svc kubernetes

3.5 查看特定命名空间中所有部署的信息

kubectl get deployments -n <命名空间>
kubectl get deployments -n <命名空间> -owide
#在名为 "app" 的命名空间中获取所有的部署(Deployments)
kubectl get deployments -n app
kubectl get deployments -n app -owide

3.6 查看资源标签信息

标签的作用:

  • 辅助筛选资源:通过标签,我们可以筛选出具有特定属性的资源,便于管理和操作
  • 实现资源的分组:标签可以将资源进行分组,从而合理组织资源结构,使得管理更加有序
  • 支持负载均衡:在Kubernetes中,Service的Selector会根据标签匹配来实现负载均衡,确保请求能够分发到合适的Pod上。当一个pod迭代或替换之后,新的pod实例IP地址也会改变,同时会将IP地址绑定在标签上,通过访问标签,实现负载均衡
  • 支持Pod的扩容和缩容:Deployment等控制器会根据匹配的标签进行Pod的扩容和缩容,以满足应用的需求
  • 支持扩展性和灵活性:标签为Kubernetes提供了一种非常灵活的资源管理方式,可以根据需要添加、修改或删除标签,以适应应用的变化和演进
  • 版本管理:可以使用标签标记不同版本的应用,方便进行版本控制和回滚操作

标签的特点

  • 每个对象都可以定义一组键值标签
  • 每个键对于给定对象必须是唯一的
  • 标签能够支持高效的查询和监听操作,对于用户界面和命令行是很理想的
3.6.1 查看存在资源的标签
kubectl get <资源类型> [-n 命名空间] --show-labels

(1)查看某一命名空间内所有 pods 实例的标签 

#获取指定命名空间(namespace)中的所有 Pod,并显示它们的标签(labels)信息
kubectl get pod -n kube-system --show-labels

(2) 查看某一命名空间内指定的某一 pod 实例的标签

#获取指定命名空间(namespace)中的 etcd-master 信息,并显示它的标签(labels)信息
kubectl get pod etcd-master -n kube-system --show-labels

3.6.2 查看指定标签中含有的资源
kubectl get <资源类型>  [-n 命名空间] -l <标签名称>
#列出kube-system命名空间中具有名为"component"的标签的所有Pod
kubectl get pods  -n kube-system -l component

#get pods:指定查看资源类型为pod
#-n kube-system:指定查看kube-system的命名空间
#-l component :仅显示标签为component的资源

3.6.3 查看标签中指定的资源
kubectl get pods  -n kube-system -l component=kube-apiserver

#-l component=kube-apiserver:指定查看包含component标签,且值为kube-apiserver的资源

4、创建和删除命名空间

4.1 创建命名空间

kubectl create namespace <自定义名称>

简写:
kubectl create ns <自定义名称>
kubectl create ns dh      #创建新的命名空间为dh
kubectl create ns app     #创建新的命名空间为app
kubectl get ns            #查看当前所有的命名空间

4.2 删除命名空间

kubectl delete namespace <namespace_name>

简写:
kubectl delete ns <namesp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值