【云原生之K8s】 K8s管理工具kubectl详解(一)

目录

一、陈述式管理

1、陈述式资源管理办法

2、K8s相关信息查看

2.1 查看版本信息

2.2 查看节点信息

​编辑

 2.3 查看资源对象简写

2.4 查看集群信息 

 2.5 配置kubectl自动补全

扫描二维码关注公众号,回复: 16749035 查看本文章

2.6 查看日志

 2.7 基本信息查看

 查看命名空间

 2.8 命名空间操作

 2.9 deployment/pod操作

2.10 增加/删除label

 二、声明式管理

1、声明式管理办法

2、查看资源配置清单

 3、解释资源配置清单

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

4.1 离线修改

 4.2 在线修改

 5、删除资源配置清单

5.1 陈述式删除

 5.2 声明式删除


一、陈述式管理

1、陈述式资源管理办法

  • kubernetes 集群管理集群资源的唯一入口时通过相应的方法调用apiserver的接口
  • kubectl是官方的CLI命令行工具,用于余apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理K8s各种资源的一种有效途径
  • kubectl的命令大全:kubectl --help
  • K8s官方中文文档:http://docs.kubernetes.org.cn/683.html
  • 对资源的增、删、查操作比较容易,但对改的操作就不容易了

2、K8s相关信息查看

2.1 查看版本信息

kubectl version

2.2 查看节点信息

kubectl get nodes

 2.3 查看资源对象简写

kubectl api-resources

2.4 查看集群信息 

kubectl cluster-info

 2.5 配置kubectl自动补全

source <(kubectl completion bash)

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

2.6 查看日志

#查看组件日志
journalctl -u kubelet -f
或
kubectl logs [组件名] -n [命名空间]

 2.7 基本信息查看

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

获取资源的相关信息,-n指定命名空间,-o指定输出格式
resource可以是具体资源名称,如"pod nginx-xxx";也可以是资源类型,如"pod,node,svc,depoly"多种资源使用逗号隔离;或者all(仅展示几种核心资源,并不完整)

  • -all-namespace或-A:标识显示所有命名空间
  • -show-labels:显示所有标签
  • -l app:仅显示标签为app的资源
  • -l app=nginx:仅显示包含app标签,且值为nginx的资源

查看master节点状态

kubectl get componentstatuses

#componentstatues可以缩写成cs
kubectl get cs

 查看命名空间

kubectl get namespace

#namespace可以缩写成ns
kubectl get ns

 2.8 命名空间操作

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

kubectl get all [-n default]

 创建命名空间

kubectl create ns ye

 删除命令空间

kubectl delete ns ye

 2.9 deployment/pod操作

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

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

 描述某个资源的详细信息

kubectl describe deployment nginx-test -n kube-public

kubectl describe pod nginx-test -n kube-public

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

kubectl get pods -n kube-public

 登录容器

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

kubectl exec -it nginx-test-795d659f45-qs48r bash -n kube-public

 删除(重启)pod资源

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

kubectl delete pod nginx-test-795d659f45-qs48r -n kube-public
kubectl get pod -n kube-public

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

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

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

 扩缩容

扩容

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

缩容 

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

 删除副本控制器

kubectl delete deployment nginx-test -n kube-public

定义自动扩容缩容规则 

使用deployment “foo” 设定,使用默认的自动伸缩策略,指定目标cpu使用率,使其pod数量在2-10之间

kubectl autoscale deployment foo --min=2,--max=10
使用RC'foo' 设定,使其pod的数量介于1-5之间,cpu使用率维持在80%
 
kubectl autoscale rc foo --max=5 --cpu-rercent=80

自动扩容,缩容触发条件

定义最大最小pod数量

定义扩容条件:往往和pod使用的基础资源百分比相关,例如使用到cpu资源80%的时候触发扩容,80% 不是指node节点的80%,而是指pod内limit上限的80%

2.10 增加/删除label

增加label

kubectl label deploy nginx version=nginx-new

 删除label

kubectl label deploy nginx version-

 二、声明式管理

1、声明式管理办法

  • 适合对于资源的修改操作
  • 声明式资源管理方法依赖于资源配置清单文件
  • 资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
  • 在资源的观念里,是通过实现定义在同一资源配置清单内,再通过陈述式命令应用到K8s集群里
  • 语法格式:kubectl create/apply/delete -f -o yaml

2、查看资源配置清单

kubectl get deploy/nginx-test -o yaml
#查看deploy控制器配置清单

kubectl get service nginx -o yaml
#查看pod配置清单

 3、解释资源配置清单

kubectl explain deployment.metadata

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

4.1 离线修改

修改yaml文件

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

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

删除资源

kubectl delete -f nginx-svc.yaml

 新建资源

kubectl apply -f nginx-svc.yaml

 查看service资源

kubectl get svc

 4.2 在线修改

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

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

kubectl edit service nginx

 5、删除资源配置清单

5.1 陈述式删除

kubectl delete service nginx

 5.2 声明式删除

kubectl delete -f nginx-svc.yaml

猜你喜欢

转载自blog.csdn.net/weixin_71429844/article/details/127746449