概述


kubectl是k8s集群的客户端,用户通过kubectl连接到集群的apiserver,并将命令传递到master上,然后master再将命令分发到node节点上执行。

kubectl由众多的子命令构成。
这里写图片描述

命令举例


创建

kubectl run nginx --replicas=3 --labels="app=example" --image=nginx:1.10 --port=80

–replicas:指定副本数
nginx:名称
–labels:标签
–image:使用的镜像(默认从dockerhub拉取)
–port:容器的端口

这里写图片描述

通过describe指令可以查看到每个pod的在创建中的事件:

kubectl describe po/nginx-75f69c4f46-7qswr

这里写图片描述

可以看到,第一步调度pod到一个节点,然后挂载一个数据卷,接着下载镜像,创建容器并启动。

在创建的时候指定运行的命令

kubectl run busybox --image=busybox --command -- ping baidu.com

创建命令空间

kubectl create namespace mytest

查看命名空间

kubectl get namespace

这里写图片描述

更新项目

现在想对线上的容器做一个更新,例如我现在有nginx容器:
这里写图片描述

我可以通过kubectl edit deploy/nginx命令来查看构建镜像的yaml文件,假设我现在想更新nginx版本,则可以修改这里然后保存退出:
这里写图片描述

这样就会应用到所有的pod上去,通过kubectl get all可以看见,旧版本的nginx正在删除,新版本的nginx正在构建,最后都变成running状态。

查看在集群中运行的插件

kubectl cluster-info

超详细信息可以使用kubectl cluster-info dump

查看pod或deployment的event

kubectl get all看到pod或deployment部署失败的时候,可以通过下面的命令指定查看event进行排错:

kubectl describe po/nginx-5fc8fd597f-wv9ff

其中主要关注Event中的内容,当然上边还有一些其他的信息以供参考:
这里写图片描述

查看pod日志

这里写图片描述

连接到pod上的容器

这里写图片描述

查看deploy

kubectl get deploy

这里写图片描述

查看pod标签

kubectl get pods --show-labels

这里写图片描述

查看指定标签的pod

kubectl get pods -l run=nginx

这里写图片描述

查看pod详细信息

kubectl get pods -o wide

这里写图片描述

发布一个服务

kubectl expose deployment nginx --port=88 --type=NodePort --target-port=80 --name=nginx-service

这一步说是将服务暴露出去,实际上是在服务前面加一个负载均衡,因为pod可能分布在不同的结点上。
–port:暴露出去的端口
–type=NodePort:使用结点+端口方式访问服务
–target-port:容器的端口
–name:创建service指定的名称

这里写图片描述

其中88:31442/TCP,88端口通过clusterip访问,31442随机端口通过node结点ip加端口访问。

查看一个服务详细信息

kubectl describe service nginx-service

资源发布管理

查看资源部署状态

kubectl rollout status deployment/nginx

这里写图片描述

查看发布历史

kubectl rollout history deployment/nginx

这里写图片描述

kubectl rollout history deployment/nginx --revision=3

pod扩容和缩容

kubectl scale deployment nginx --replicas=10

回滚

kubectl rollout undo deployment/nginx-deployment

这里写图片描述

默认回滚到上一个版本

kubectl rollout undo deployment/nginx-deployment --to-revision=3

指定回滚的版本

删除

kubectl delete deploy/nginx
kubectl delete svc/nginx-service
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐