编者按:
生产环境部署k8s后,免不了要天天和k8s命令行打交道,所以要掌握一些小技巧常识,提升咱们使用K8s的工作效率,下面就由我为大家介绍,共同学习。
1、kubernetes 命令补全
首先就得说说命令补全,但是我们一般用的是linux 基础命令的补全,对于k8s来说就得有k8s专用的命令补全包,那该怎么安装呢。步骤如下:
(1)安装bash-completion包,没有这么包就不能使用k8s补全,所以得先安装
yum install bash-completion -y
(2)然后执行bash-completion
source /usr/share/bash-completion/bashcompletion
(3)加载kubectl completion
source <(kubectl completion bash)
(4)然后就可以使用了,如果没安装就会报错
Kubectl create ns
(5)别着急,上面只是在当前shell的自动补全,那怎么永久生效
echo “source <(kubectl completion bash)”>>~/.bashrc 这样就可以在bash shell中永久添加自动补全
2、创建对象
Kubernetes配置可以使用yaml或者json定义,可以使用的文件扩展名有.yaml、.yml、.json
(1)创建一个资源
kubectl apply -f ./cillianpod.yaml
(2)创建多个资源怎么办?
kubectl apply -f ./cillian1.yaml -f ./cillian2.yaml
(3)创建基于目录下所有的清单文件创建资源
kubectl apply -f ./dir
(4)从一个url地址创建
kubectl apply -f https://gitee.io/cillin
(5)创建一个定时任务,间隔一分钟
kubectl create cronjob hello –image=busybox:1.28–schedule=”*/1* ** *”– echo “Hello World”
3、查看以及查找资源
(1)列出当前命名空间下的全部 Pods,并显示更详细的信息
kubectl get pods -o wide
(2)获取一个 pod 的 YAML
kubectl get pod cillian-pod -o yaml
(3)输出node、pod详细信息
kubectl describe nodes my-node或者pod
(4)列出当前命名空间下所有的service,并按名称排序
kubectl get services –sort-by=.metadata.name
(5)列出 Pods,按重启次数排序,这个命令还是很实用的
kubectl get pods –sort-by=.status.containerStatuses[0].restartCount
(6)获取当前命名空间中所有运行的pods
kubectl get pods –field-selector=status.phase=Running
(7)显示所有 Pods 的标签
kubectl get pods –show-labels
(8)列举所有 Pods 中初始化容器的容器 ID(containerID),在清理停止的容器时可以避免删除初始化的容器
kubectl get pods –all-namespaces -o jsonpath={range .items[*].status.initContainerStatuses[*]}{.containerID}{“\n”}{end} cut -d/-f3
4、更新资源
(1)#滚动更新”cillian” Deployment 的”front”容器镜像
kubectl set image deployment/frontend front=image:v2
(2)查看历史记录版本
kubectl rollout history deployment/frontend
(3)回滚到上次部署版本
kubectl rollout undo deployment/cillian
(4)回滚到特定版本
kubectl rollout undo deployment/cillian –to-revision=2.0.1
(5)更新状态监控滚动升级直到完成
kubectl rollout status -w deployment/cillian
(6)轮替重启
kubectl rollout restart deployment/cillian
(7)将某单容器 Pod 的镜像版本(标签)更新到 v4
kubectl get pod mypod -o yaml sed s/\(image: myimage\):.*$/\1:v4/ kubectl replace -f –
(8)给pod添加标签
kubectl label pods my-pod new-label=awesome
(9)#对 “cillian” Deployment 自动伸缩容
kubectl autoscale deployment cillian –min=2–max=10
5、编辑资源
(1)编辑名为 cillian 的服务
kubectl edit svc/cillian
(2)将名为cillian的副本集伸缩到3 副本
kubectl scale –replicas=3 rs/cillian
(3)#在 “cillian.yaml”文件中伸缩到3个副本
kubectl scale –replicas=3-f cillian.yaml
(4)如果名为 cillian 的 Deployment 的副本当前是1,那么将它伸缩到2
kubectl scale –current-replicas=1–replicas=2 deployment/cillian
6、删除资源
(1)删除指定pod
kubectl delete -f ./cillian.yaml
(2)删除指定服务和pod
kubectl delete pod,service cillian1 cillian2
(3)删除指定标签的服务和pod
kubectl delete pods,services -l name=myLabel
(4)删除在 cillian 命名空间中全部的 Pods 和服务
kubectl -n cillian delete pod,svc –all
7、与pods交互
(1)查看日志
kubectl logs mypod
(2)进入pod
Kubectl exec mypod bash
(3)使用交互 shell 访问正在运行的 Pod (一个容器场景)
kubectl exec –stdin –tty my-pod –/bin/sh
(4)复制文件
kubectl cp my-namespace/my-pod:/tmp/cillian /tmp/cillian
8、节点集群管理
(1)标记不可调度
kubectl cordon my-node
(2)驱逐节点
kubectl drain my-node
(3)取消不可调度标记
kubectl uncordon my-node
(4)显示主控节点和服务地址
kubectl cluster-info
(5)将集群状态输出到指定目录
kubectl cluster-info dump –output-directory=/path/to/cluster-state
好了,学会了这些使用技巧,相应付日常k8s没问题,下次分享有关k8s api探索的知识。
暂无评论内容