• 云原生k8s之管理工具kubectl详解(一)


    目录

    一、陈述式管理

    1、陈述式资源管理方式

    2、k8s相关信息查看

    3、命名空间操作 

    4、deployment/pod操作 

    4、扩缩容

    5、删除副本控制器 

    6、增加/删除lable

    二、声明式管理 

    1、声明式管理方法

    2、查看资源配置清单

    3、解释资源配置清单 

    4、修改资源配置清单并应用 

    5、删除资源配置清单 


    一、陈述式管理

    1、陈述式资源管理方式

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

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

    kubectl的命令大全   kubectl --help

    k8s官方中文文档:Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区

    对资源的增、删、改、查操作比较容易,但对改的操作就不容易了

    2、k8s相关信息查看

    查看版本信息

    kubectl version

    查看节点信息

    kubectl get node

     

    查看资源对象简写

    kubectl get node

     

    查看资源对象简写

    kubectl api-resources

    查看集群信息 

    kubectl cluster-info

    配置kubectl自动补全 

    source <(kubectl completion bash)

    可通过TAB键实现命令补全,建议将其写入/etc/profile

    一般用的比较少

    查看日志 

    journalctl -u kubelet -f

    基本信息查看

    kubectl get [-o wide|json|yaml] [-n namespace]

    获取资源的相关信息,-n指定命名空间,-o指定输出格式

    resource可以是具体资源名称,如“pod nhinx-xxx”;也可以是资源类型,如“pod,node,svc,deploy”多种资源使用逗号间隔;或者all(仅显示包含app标签,并不完整)

    -all-namespace或者-A:标识显示所有命名空间

    -show-labels:显示所有标签

    -l app:仅显示标签为app的资源

    -l app=nginx:仅显示包含app标签,且值为nginx的资源

    查看master节点状态

    1. kubectl get componentstatuses
    2. #cpmponentstatuses可以缩写成cs
    3. kubectl get cs

    查看命名空间 

    1. kubectl get namespace
    2. #namespace可以缩写成ns
    3. kubectl get ns

     

    3、命名空间操作 

    查看default命名空间的所有资源

    kubectl get all [-n default]

    由于default为缺省空间,当不指定命名空间时默认查看default命名空间 

    创建命名空间

    kubectl create ns kube-zzz

     

    删除命名空间

    kubectl delete ns kube-zzz

    4、deployment/pod操作 

    在命名空间kube-public创建副本控制器(deployment)来启动Pod(nginx)

    kubectl create deployment nginx --image=nginx -n kube-public

    1. kubectl get pod -n kube-public
    2. #查看命名空间为kube-public的pod

     

    看到状态为running,就是创建完成并成功启动了

    描述某个资源的详细信息

    kubectl describe deployment nginx -n kube-public

     

    1. kubectl describe pod nginx -n kube-public
    2. #查看pod的详细信息

     

    查看命名空间kube-public中的pod信息

    kubectl get pods -n kube-public

     

    登陆容器 

    kubectl exec可以跨主机登陆容器,docker exec只能在容器所在主机登陆。 

    kubcectl exec -it nginx-6799fc88d8-pcwjv bash -n kube-public

     

    删除(重启)pod资源

    由于存在deployment/rc之类的副本控制器,删除pod也会重启拉起来

     

    删除后,控制器会自动重新启动一个新的pod

    若无法删除,总是处于terminate状态,则要强行删除pod

    kubectl delete pod [] -n [] --force --grace-period=0
    

    grace-period表示过渡存活期,默认30s,在删除pod之前允许pod慢慢终止其上的容器进程,从而优雅的退出,0表示立即终止pod 

    4、扩缩容

    扩容

    kubectl scale deployment nginx --replicas=3 -n kube-public

    自动创建了3台pod

     

    缩容

    kubectl scale deployment nginx --replicas=1 -n kube-public

     

    5、删除副本控制器 

    kubectl delete deployment nginx-test -n kube-public
    

    6、增加/删除lable

    增加lable

    kubectl label deploy nginx version=nginx-latest

    删除label

    kubectl label deploy nginx version-

     

    二、声明式管理 

    1、声明式管理方法

    适合于对资源的修改操作

    声明式资源管理方法依赖于资源配置文件对资源进行管理

    资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)

    对资源的观念里,是通过实现定义在同一资源配置清单内,再通过陈述式命令应用到k8s集群里

    语法格式:kubectl create/apply/delete -f -o yaml

    2、查看资源配置清单

    1. kubectl get deploy/nginx -o yaml
    2. 查看deploy控制器配置清单

    1. kubcectl get service nginx -o yaml
    2. 查看pod配置清单

     

    3、解释资源配置清单 

    kubectl explain deployment.metadata

    kubectl explain service.metadata

     

    4、修改资源配置清单并应用 

    修改yaml文件----离线修改

    修改yaml文件:并用kubectl apply -f xxxx.yaml文件使之生效
    注意:当apply不生效时,先使用delete清除资源,再apply创建资源

    kubectl get service nginx-service -o yaml > nginx-svc.yaml
    

     

    删除资源

    kubectl delete -f nginx-svc.yaml
    

     

    新建资源

    kubectl apply -f nginx-svc.yaml
    

     

    查看service资源

    kubectl get svc
    

     

    修改yaml文件---在线修改

    直接使用kubectl edit service nginx-service在线编辑配置资源清单并保存退出即时生效(如port: 888)

    PS:此修改方式不会对yaml文件内容修改 

    kubectl edit service nginx

    5、删除资源配置清单 

    陈述式删除

    kubectl delete service nginx

    声明式删除

    kubectl delete -f nginx-svc.yaml
    

     

     

  • 相关阅读:
    JS中数组随机排序实现(原地算法sort/shuffle算法)
    java计算机毕业设计学生选拔系统源码+mysql数据库+lw文档+系统+调试部署
    web网页大作业:基于html设计与实现的茶文化网站12页(带psd)
    算法训练 第三周
    自主式模块化无人机设计
    大数据-199 数据挖掘 机器学习理论 - 决策树 模型 决策与条件 香农熵计算
    基础 | NIO - [Files & Path & Charset]
    Mybatis -- 读取 DATE 类型字段时可能遇到的问题(夏令时问题)
    大模型 RAG 是什么?
    强平安稳分析
  • 原文地址:https://blog.csdn.net/liji133122/article/details/127773879