查询集群所有资源的详细信息,resource包括集群节点、运行的Pod、Deployment、Service等。
kubectl get po -o wid
kubectl get namespace
kubectl get po --all-namespaces
kubectl get po --show-labels
kubectl get po
-o yaml
kubectl get po-o json
直接kubectl create -f filename即可创建文件内定义的resource。
kubectl create -f filename
将资源如: Pod、Service、Deployment等公开为一个新的Service。
kubectl expose deployment deployname --port=81 --type=NodePort --target-port=80 --name=service-name
在集群中运行一个特定的镜像。
kubectl run deployname --image=nginx:latest
在创建时指定运行的命令:
kubectl run deployname -image=busybox --command -- ping baidu.com
将一个deployname的image改为镜像为1.0的image:
kubectl set image deploy deployname containername=containername:1.0
edit提供了另一种更新resource源的操作。
kubectl edit po po-nginx-btv4j
查看文档或参考资料。
kubectl explain pod
根据 resource名或label删除resource。
kubectl delete po podname --now
kubectl delete -f nginx.yaml
kubectl delete deployment deployname
2.1 *rolling-update*
滚动更新,启动一个新的Pod,启动成功后删除旧的Pod,直到升级完毕。
kubectl rolling-update poname -f newfilename
kubectl rolling-update poname -image=image:v2
升级回滚
kubectl rolling-update poname -rollback
查看指定资源的部署状态:
kubectl rollout status deployment/deployname
查看指定资源的发布历史:
kubectl rollout history deployment/deployname
回滚指定资源,默认回滚至上一个版本:
kubectl rollout undo deployment/test-nginx
kubectl scale deployment deployname --replicas=newnumber
自动扩缩容设置
kubectl autoscale deployment deployname --min=minnumber --max=maxnumber
标记Node不可调度
kubectl cordon nodename
将Node上的Pod迁移
kubectl drain nodename --ignore-daemonsets --ignore-emptydir
解除Node不可调度
kubectl uncordon nodename
查看在集群中运行的插件:
kubectl cluster-info
查看详细信息:
kubectl cluster-info dump
descirbe与get类似,但不支持-o,get查询的是配置信息,describe查询的是集群信息(包括状态)。
输出Pod内日志,如果要获得tail -f的方式,需使用-f选项。
kubectl logs -f podname
与docker的exec指令类似。如果一个Pod中多个容器,需要-c指令指定容器。
kubectl exec -it podname bash
kubectl exec -it podname -c containername bash
转发一个或多个本地端口至一个pod。示例:本地端口5000,映射Pod端口
kubectl port-forward podname 5000:6000
运行一个proxy到Kubernetes api server。示例:控制节点开启HTTP Rest接口:
kubectl proxy -accept-hosts=’.*’ -port=8001 -address=’0.0.0.0’
拷贝文件或目录到容器:
cp filename newfilename
检查授权
查看Pod内容器运行日志,类似-logs 指令,多个容器需要指定容器名称。
kubectl attach podname -c containername
对资源进行更新,如更新替换pod。
kubectl replace -f filename
使用yaml中变更的配置,增量资源。apply不会删除原有resource,然后创建新的。apply直接在原有resource的基础上进行更新。同时kubectl apply还会在resource中添加一条注释,标记当前的apply,类似于git操作。
kubectl apply -f
对容器属性修改,但是不删除容器,直接对容器修改。
kubectl patch pod podname -p '{"metadata":{"labels":{"app":"nginx2"}}}'
更新资源上的标签:
kubectl label pods my-pod new-label=newlabel
更新资源上的注释:
kubectl annotate pods my-pod icon-url=http://……