kubectl查看node状态 |
您所在的位置:网站首页 › 只更新目录的页码怎么删除 › kubectl查看node状态 |
--- title: Kubectl常用命令 date: 2019-02-24 22:26:37 categories: - 容器 tags: - k8s --- ## 运行容器 ### 前台运行的容器 ```bash kubectl run -it --rm --image=centos --restart=Never test bash ``` ### 常驻后台的容器 ```bash kubectl run nginx --image=nginx --replicas=2 ``` 通常使用yaml文件创建容器,只在调试或者排错的时候使用`kubectl run`临时创建容器。 比如: ### 创建网络排查容器 ```bash kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools ``` 如果创建了一个MySQL容器并且暴露了service,但是不能使用service访问mysql,这个时候可以使用`nslookup`或者`dig`这些网络命令排查。 ```bash dnstools# nslookup mysql Server: 172.21.0.2 Address: 172.21.0.2#53 Name: mysql.qa.svc.cluster.local Address: 172.21.147.86 ``` ### 创建MySQL排查容器 ```bash kubectl run -it --rm --image=mysql:5.6 --restart=Never mysql-client -- mysql -h mysql --port 3306 -u root -p123456 ``` 如果创建的MySQL容器在集群外连接不上了,可以创建一个mysql容器在内部连接看看能不能连上。 - `-h`参数是MySQL的host; - `--port`参数是MySQL的端口号; - `-u`参数是MySQL的用户名; - `-p`参数是用户名对应的密码,`-p`和密码之间没有空格。 ## 应用资源 ```bash kubectl apply -f deployment.yaml ``` 推荐使用这种方式创建或者更新资源。 ## 获取容器 ```bash kubectl get pods --all-namespaces -o wide ``` 获取所有namespace的容器。 - `--all-namespaces`表示所有namespace,默认获取`default namespace`的资源,可以通过`-n`指定namespace。 - `-o wide`表示输出格式,其他还要`json`,`yaml`。 ### 获取所有不是Running状态的容器 ```bash kubectl get pods --all-namespaces -o wide | awk '{if ($4 != "Running") print $0}' ``` ### 获取其他资源 除了容器,还有很多其他资源例如`node`、`service`、`deployment`、`statefulset`、`daemonset`、`job`、`pvc`、`pv`等等可以通过kubectl来获取,大多数是区分namespace的,也有不区分namespace的比如`node`、`pv`、`storageclass`等。 ## 删除容器 ```bash kubectl delete pod nginx-deployment-599c95f496-hd2jc ``` ### 强制删除: ```bash kubectl delete pod nginx-deployment-599c95f496-hd2jc --force --grace-period=0 ``` ### 批量强制删除: ```bash kubectl get pods | grep Terminating | awk '{print $1}' | xargs kubectl delete pod --force --grace-period=0 ``` ### 批量强制删除非运行容器 ```bash kubectl get pods --all-namespaces | awk '{if ($4 != "Running") system ("kubectl -n " $1 " delete pods " $2 " --grace-period=0 " " --force ")}' ``` ## 扩缩容 ```bash kubectl scale deployment nginx --replicas 4 ``` 最小可以缩容到0个。 ## 暂停滚动升级 ```bash kubectl rollout pause deployment nginx ``` 滚动升级时,可以使用该命令暂停升级来实现金丝雀发布。 ## 恢复滚动升级 ```bash kubectl rollout resume deployment nginx ``` 暂停后恢复。 ## 回滚 ```bash kubectl rollout undo deployment nginx ``` 回滚到上一次发布。 ## 给node加taint(污点) ```bash kubectl taint nodes node1 key=value:NoSchedule ``` 给节点添加污点后只有容忍了该污点的容器才能调度上来。 ## 查看node信息 ```bash kubectl describe nodes node1 ``` 通过该命令可以查看node的资源、内核、容器、标签和污点等等。 ## 给node加标签 ```bash kubectl label node node1 kubernetes.io/role=node --overwrite ``` 给node加标签后可以用节点亲和性指定某些pod调度到固定node。 ## 删除node上的标签 ```bash kubectl label node node1 kubernetes.io/role- ``` ## 根据标签筛选 ```bash kubectl get nodes -l node-type=iot ``` ## 禁止节点调度 ### 只禁止不驱逐 ```bash kubectl cordon node1 ``` 这种方式只把node标记为`SchedulingDisabled`,已经在node上运行的pod不会受影响,之后不会再有新的pod调度上去。 ### 禁止并驱逐 ```bash kubectl drain node1 --ignore-daemonsets --delete-local-data --force ``` 这种方式除了把node标记为`SchedulingDisabled`,已经运行的pod也会被驱逐,保证节点除`daemonset`外没有其他pod。 ## 恢复调度 ```bash kubectl uncordon node1 ``` 一键复制 编辑 Web IDE 原始数据 按行查看 历史 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |