kubectl基本使用

kubectl 输出格式

显示Pod的更多信息

kubectl get pod <pod-name> -o wide

以yaml格式显示Pod的详细信息

kubectl get pod <pod-name> -o yaml

kubectl 操作示例

kubectl 创建资源对象

$ kubectl create -f ./my-manifest.yaml     #创建资源

$ kubectl create -f ./my1.yaml -f ./my2.yaml    #使用多个文件创建资源
$ kubectl create -f my-service.yaml -f my-rc.yaml    #根据yaml配置文件一次性创建service和rc

$ kubectl create -f <directory>    #根据<directory>目录下所有.yaml、.yml、.json文件的定义进行创建操作
$ kubectl create -f ./dir    #使用目录下的所有清单文件(yaml)来创建资源

$ kubectl create -f https://www.appblog.cn/test.yaml    #使用url创建资源

$ kubectl run nginx --image=nginx    #启动一个nginx实例

$ kubectl explain pods    #获取pod和svc的文档

kubectl 查看和查找资源对象

以下命令查找资源时可能查不到的原因是需要指定namespace,通过-n <namespace>指定即可,或者all

$ kubectl get pods    #查看所有Pod列表

$ kubectl get rc,service    #查看rc和service列表

$ kubectl get pods --all-namespaces    #列出所有namespace中的pod,也可以是services、deployment等

$ kubectl get pods -o wide    #列出pod并显示详细信息

$ kubectl get deployment my-dep    #列出指定daployment

$ kubectl get pods --include-uninitialized    #列出该namespace中的所有pod,包括未初始化的

使用详细输出描述资源对象

$ kubectl describe nodes <node-ip or node-name>    #查看node节点详细信息

$ kubectl describe pods <pod-name>    #查看pod详细信息

$ kubectl describe pods <rc-name>    #查看由RC管理的Pod的信息

$ kubectl get services --sort-by=.metadata.name --all-namespaces    #列出所有service并按名称排序

根据重启次数排序列出pod

$ kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' --all-namespaces

获取所有具有app=cassandra的pod中的version标签

$ kubectl get pods --selector=app=cassandra rc -o jsonpath='{.items[*].metadata.labels.version}'

获取所有节点的ExternalIP

$ kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternlIP")].address}'

kubectl 编辑资源对象

$ kubectl -n codeus edit svc/c    #编辑codeus命名空间下名称为c的service

kubectl Scale 资源对象(Pod的扩容与缩容)

扩展pod下容器数量

$ kubectl scale --replicas=3 rc redis    #执行扩容缩容Pod的操作
$ kubectl scale --replicas=3 rs/foo    #扩展名称为foo的资源到3个,是否使用rs取决于yaml中的编写

例如yaml中kind: Deployment,则应通过下面方法扩展

$ kubectl scale --replicas=3 deployment/foo

或者直接通过创建资源的yaml文件扩展

$ kubectl scale --replicas=3 -f foo.yaml

根据判断条件扩展

例如条件是:如果mysql的数量是2,则扩展到3

$ kubectl scale --current-replicas=2 --replicas=3 deployment/mysql

同时扩展多个资源

$ kubectl scale --replicas=5 rc/foo rc/bar rc/baz

需要确认的是在配置文件中定义的replicas数量,当我们执行上述命令的结果大于replicas的数量时,则我们执行的命令相当于扩容操作,反之相反,可以理解为我们填写的数量是我们需要的Pod数量。需要注意的是,当我们需要进行永久性扩容时,不要忘记修改配置文件中的replicas数量。

kubectl 删除资源对象

$ kubectl delete deployment <name>    #删除指定deployment,此方法还可以删除service等

$ kubectl delete -f xxx.yaml    #基于创建此pod的yaml文件删除pod

$ kubectl delete pods,services -l name=<label-name>    #删除所有包含某个label的Pod和service

$ kubectl delete pods --all    #删除所有Pod

kubectl 与运行中的pod交互

$ kubectl -n <namespaces> logs <pod-name>    #查看pod日志,-f 持续查看

$ kubectl port-forward <pod-name> 5000:6000    #转发pod中的6000端口到本地的5000端口

$ kubectl exec <pod-name> --ls /    #在已存在的容器中执行命令

$ kubectl exec <pod-name> data    #执行Pod的data命令,默认是用Pod中的第一个容器执行

$ kubectl exec <pod-name> -c <container-name> data    #指定Pod中某个容器执行data命令

$ kubectl exec -it <pod-name> -c <container-name> bash    #通过bash获得Pod中某个容器的TTY,相当于登录容器

Pod的滚动升级

kubectl rolling-update redis -f redis-rc.update.yaml    #执行滚动升级操作

需要注意的是当我们执行rolling-update命令前需要准备好新的RC配置文件以及ConfigMap配置文件,RC配置文件中需要指定升级后需要使用的镜像名称,或者可以使用kubeclt rolling-update redis --image=redis-2.0直接指定镜像名称的方式直接升级。

版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/03/31/basic-usage-of-kubectl/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
kubectl基本使用
kubectl 输出格式 显示Pod的更多信息 kubectl get pod <pod-name> -o wide 以yaml格式显示Pod的详细信息 kubectl get pod <pod-name> -o yaml ku……
<<上一篇
下一篇>>
文章目录
关闭
目 录