k8s管理工具kubectl详解(一)
k8s管理工具kubectl详解(一)
·
目录
在命名空间kube-public创建副本控制器(deployment)来启动Pod(nginx)
若无法删除,总是处于terminate状态,则要强行删除pod
一、陈述式管理
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 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节点状态
kubectl get componentstatuses
#cpmponentstatuses可以缩写成cs
kubectl get cs
查看命名空间
kubectl get namespace
#namespace可以缩写成ns
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
kubectl get pod -n kube-public
#查看命名空间为kube-public的pod
看到状态为running,就是创建完成并成功启动了
描述某个资源的详细信息
kubectl describe deployment nginx -n kube-public
kubectl describe pod nginx -n kube-public
#查看pod的详细信息
查看命名空间kube-public中的pod信息
kubectl get pods -n kube-public
登陆容器
kubectl exec可以跨主机登陆容器,docker exec只能在容器所在主机登陆。
kubectl exec -it nginx-6799fc88d8-w9wkv 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
增加label
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.查看资源配置清单
kubectl get deploy/nginx -o yaml
查看deploy控制器配置清单
kubcectl get service nginx -o yaml
查看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
更多推荐
已为社区贡献4条内容
所有评论(0)