Mr. Cappuccino的第37杯咖啡——Kubernetes资源管理

kubectl常用的命令

kubectl是k8s集群的命令行工具,通过它能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署,kubectl命令的语法如下:

kubectl [command] [type] [name] [flags]
comand:指定要对资源执行的操作,例如create、get、delete
type:指定资源类型,比如deployment、pod、service
name:指定资源的名称,名称大小写敏感
flags:指定额外的可选参数

kubectl的命令可分为三类:

  1. 陈述式管理方法 - 主要依赖命令行CLI工具进行管理
  2. 声明式管理方法 - 主要依赖统一资源配置清单(manifest)进行管理
  3. GUI式管理方法 - 主要依赖图形化操作界面(web界面)进行管理

陈述式管理方法

  1. Kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口;
  2. kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver 能识别的信息,进而实现管理k8s各种资源的一种有效途径;
  3. kubectl 的命令大全:
kubectl --help
  1. k8s官方中文文档
1. 创建一个namespace

语法:

kubectl create ns/namespace namespace名称

实例:

kubectl create ns bubble-dev
kubectl create namespace bubble-dev

在这里插入图片描述

2. 查询所有namespace

语法:

kubectl get ns/namespace

实例:

kubectl get ns
kubectl get namespace

在这里插入图片描述

3. 在namespace下运行一个pod

语法:

kubectl run pod --image=镜像名称 -n namespace名称

实例:

kubectl run pod --image=nginx -n bubble-dev

在这里插入图片描述

4. 查询指定namespace下的pod

语法:

kubectl get pods -n namespace名称

实例:

kubectl get pods -n bubble-dev

在这里插入图片描述
如果不使用-n指定namespace,则会查询默认namespace(default)下的pod

5. 查看指定pod的详细信息

语法:

kubectl describe pod pod名称 -n namespace名称

实例:

kubectl describe pod pod-864f9875b9-kwbj2 -n bubble-dev

在这里插入图片描述

6. 删除pod

语法:

kubectl delete pods pod名称 -n namespace名称

实例:

kubectl delete pods pod-864f9875b9-kwbj2 -n bubble-dev

在这里插入图片描述
但是使用kubectl delete pods命令删除pod,之后又会重新启动一个新的pod
在这里插入图片描述
此时pod的名称也已经发生了变化,如果想要完全删除掉一个pod,需要删除掉这个pod的deployment或者整个namespace

7. 删除namespace

语法:

kubectl delete namespace/ns namespace名称

实例:

kubectl delete namespace bubble-dev
kubectl delete ns bubble-dev

在这里插入图片描述
此时namespace以及namespace下运行的所有pod都被删除掉了
在这里插入图片描述

声明式管理方法

  1. 适合于对资源的修改操作;
  2. 声明式资源管理方法依赖于资源配置清单文件对资源进行管理;
  3. 资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析);
  4. 对资源的管理,是通过事先定义在统一资源配置清单内,再通过陈述式命令应用到k8s集群里;
  5. 语法格式:kubectl create/apply/delete -f -o yaml
命令式对象配置

命令式对象配置就是使用命令配合配置文件一起来操作kubernetes资源。

1. 创建yaml文件

自定义yaml文件名称:nginx-pod.yaml

vi nginx-pod.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: bubble-dev # 指定Namespace空间名称 

---

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod    # 指定pod的名称
  namespace: bubble-dev  # 指定该pod对应的Namespace
spec:
  containers: 
  - name: nginx-container # 运行一个nginx容器
    image: nginx:1.17.9  # 指定镜像的名称

在这里插入图片描述

2. 基于yaml文件创建资源
kubectl create -f nginx-pod.yaml

在这里插入图片描述

3. 基于yaml文件查询资源
kubectl get -f nginx-pod.yaml

在这里插入图片描述

4. 基于yaml文件删除资源
kubectl delete -f nginx-pod.yaml

在这里插入图片描述

声明式对象配置

声明式对象配置跟命令式对象配置很相似,但是它只有一个命令apply。

其实声明式对象配置就是使用apply描述一个资源最终的状态(在yaml中定义状态)
使用apply操作资源:
如果资源不存在,就创建,相当于 kubectl create
如果资源已存在,就更新,相当于 kubectl patch

1. 基于yaml文件创建资源
kubectl apply -f nginx-pod.yaml

在这里插入图片描述

2. 基于yaml文件更新资源

将yaml文件中Nginx的版本从1.17.9改成1.17.8,再执行命令
在这里插入图片描述
从运行结果可知,此时pod是发生了变化的

kubectl describe pod nginx-pod -n bubble-dev

在这里插入图片描述
总结:三种方式应该怎么用?

  1. 创建/更新资源,使用声明式对象配置: kubectl apply -f xxxx.yaml
  2. 删除资源,使用命令式配置: kubectl delete -f xxxx.yaml
  3. 查询资源,使用命令式对象管理: kubectl get(describe) 资源名称+命令空间

声明式对象管理命令介绍

kubectl create ns bubble-dev
kubectl run nginx --image=nginx:1.17.9 --port=80 -n=bubble-dev
kubectl get pods -n=bubble-dev

查看Pod的yaml文件(-o yaml:以yaml的格式显示出来)

kubectl get pods -n bubble-dev nginx-5c9b49c46-49wxm -o yaml
kubectl get pods nginx-5c9b49c46-49wxm -n bubble-dev -o yaml

在这里插入图片描述
查看yaml配置清单相关属性信息

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod    # 指定pod的名称
  namespace: bubble-dev  # 指定该pod对应的Namespace
spec:
  containers: 
  - name: nginx-container # 运行一个nginx容器
    image: nginx:1.17.9  # 指定镜像的名称
kubectl explain pod                    --- 查看一级属性
kubectl explain pod.metadata           --- 查看二级属性
kubectl explain pod.metadata.namespace --- 查看三级属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值