Kubernetes实用技巧汇总

编者按:

生产环境部署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探索的知识。

    THE END
    喜欢就支持一下吧
    点赞12 分享
    评论 抢沙发
    头像
    欢迎您留下宝贵的见解!
    提交
    头像

    昵称

    取消
    昵称表情代码图片

      暂无评论内容