本文记录k8s实践时使用的命令。
一些记录
强烈建议安装命令补齐,可以查询到各种命令名称、资源名称,减少操作。
默认空间有 default 和 kube-system。
似乎很多获取信息类的命令都可加-o json
或-o wide
或-o yaml
。等继续验证。
多副本一般平均分配,如2节点,2个rc,各一个,但通过扩容、缩容后,可能会2个rc跑1个节点,如果删除1个rc,重新启动的rc,会分配另一节点,始终还是平均。此为不做配置情况下的结论。
yaml 文件中的冒号:
后需一个空格,否则语法错误。
一些疑问
记录在实践中的一些疑问。
如果pod过多,如何过滤?即指定某一个类型或关键字,暂时不考虑命令空间。
只在master主机,如何查看从主机上的镜像?可能从主机存在多个镜像版本,要查询。
不同的k8s版本,apiVersion与相应的资源怎么对应起来?
exec 时,执行busybox容器的cd命令出错,但如ls、date等正常,不知何故。
命令补齐
执行如下命令安装 bash-completion:
1 | # apt install bash-completion |
注:实践发现,经常性出现不能补齐的情况,再执行source的2条命令即可。
为了方便起见,可以将上面的语句放到~/.bashrc
文件末尾。
示例:
1 | # kubectl get n // 输入n,按2次Tab键,输出: |
kubectl 命令可匹配一些缩写,如获取节点命令,如下均等效:
1 | kubectl get no |
命令技巧
可通过get输出yaml格式,添加--export
,重定向到文件中,再修改。此可得一个yaml模板。
1 | # kubectl get pod mysql-ds-m4rh8 -o yaml --export |
查看集群信息:
1 | # kubectl cluster-info |
命令经验
创建:kubectl apply -f <xxx.yaml>
。
查看各种资源,如kubectl get pv kubectl get pod kubectl get svc
。
如果出错,则查看:kubectl describe pod <pod名称>
。
查看pod日志:kubectl logs <pod名称> -c <容器名称>
。
重启pod或重新创建,可删除配置文件,再创建,也可直接删除出错的pod,k8s会自动重建。(适用于deployment、ds、rs等)
命令
命令较多,结合实践,慢慢整理。主要有:集群相关,创建/删除,各种细分命令,某个功能的命令。
集群相关
初始化集群:
1 | kubeadm init |
加入集群:
1 | kubeadm join <服务器IP端口> --token <token> --discovery-token-ca-cert-hash <hash值> |
查看加入集群命令:
1 | kubeadm token create --print-join-command |
创建/删除:
1 | kubectl create -f <xx.yaml> |
删除 pod:
1 | kubectl delete pod <pod 名称> -n <命名空间> |
直接用kubectl delte pod xxx 无法真正删除pod,要删除deployment,先查看:
1 | kubectl get deployment |
再删除:
1 | kubectl delete deployment xxx |
如果资源由yaml创建,执行kubectl delete -f <xx.yaml>
可删除。如果不是,则要指定资源对象,如pod、rc、pvc,等等。可以直接用--all
删除所有的资源。
强制删除pod:
1 | kubectl delete pod <pod 名称> -n <命名空间> --force --grace-period=0 |
获取/查看/确认资源get
get可针对不同资源对象获取不同的信息。其形式:
1 | kubectl get <对象名> <资源名> <选项> |
选项有:
1 | --show-labels: 显示标签(较多资源时,用于过滤) |
1 | 查看节点状态: |
查看详情 describe
查看某个pod日志:
1 | kubectl describe pod xxx |
执行命令 exec
1 | kubectl exec mypod date # 默认第一个容器(如果有多个的话) |
如果使用run,需要指定镜像,如:
1 | 新运行并进入busybox容器,退出后删除 |
编辑edit
编辑 ConfigMap:
1 | kubectl edit cm coredns -n kube-system |
标签相关
标签可作用于 node 、pod 上。
1 | # 获取节点的标签 |
调度
1 | 禁止调度: |
注:可写yaml来实现,但有点麻烦,先不用。
1 | # 设置 master 一般情况下不接受负载 |
问题记录
1 | Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply |
用create创建,用apply更新,即产生此警告。实践发现可忽略。用apply创建,再用apply更新,无此警告。