kubectl管理命令的使用

概述


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

查看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
经验分享 程序员 微信小程序 职场和发展