本文记录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:
# apt install bash-completion source /usr/share/bash-completion/bash_completion source <(kubectl completion bash)
注:实践发现,经常性出现不能补齐的情况,于执行source的2条命令即可。
示例:
# kubectl get n // 输入n,按2次Tab键,输出: namespaces nodes networkpolicies.networking.k8s.io
kubectl 命令可匹配一些缩写,如获取节点命令,如下均等效:
kubectl get no kubectl get node kubectl get nodes
命令技巧
可通过get输出yaml格式,添加--export
,重定向到文件中,再修改。此可得一个yaml模板。
# kubectl get pod mysql-ds-m4rh8 -o yaml --export
查看集群信息:
# kubectl cluster-info 查看组件状态: kubectl get componentstatuses
命令经验
创建: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等)
命令
命令较多,结合实践,慢慢整理。主要有:集群相关,创建/删除,各种细分命令,某个功能的命令。
集群相关
初始化集群:
kubeadm init
加入集群:
kubeadm join <服务器IP端口> --token <token> --discovery-token-ca-cert-hash <hash值>
查看加入集群命令:
kubeadm token create --print-join-command
创建/删除:
kubectl create -f <xx.yaml> kubectl apply -f <xx.yaml> kubectl delete -f <xx.yaml> kubectl delete <资源名> <对象名>
删除 pod:
kubectl delete pod <pod 名称> -n <命名空间>
直接用kubectl delte pod xxx 无法真正删除pod,要删除deployment,先查看:
kubectl get deployment
再删除:
kubectl delete deployment xxx
如果资源由yaml创建,执行kubectl delete -f <xx.yaml>
可删除。如果不是,则要指定资源对象,如pod、rc、pvc,等等。可以直接用--all
删除所有的资源。
强制删除pod:
kubectl delete pod <pod 名称> -n <命名空间> --force --grace-period=0
获取/查看/确认资源get
get可针对不同资源对象获取不同的信息。其形式:
kubectl get <对象名> <资源名> <选项>
选项有:
--show-labels: 显示标签(较多资源时,用于过滤) -l app=example: 指定标签为app=example --all-namespaces: 所有命名空间,也可用--all-namespaces=true,简写为-A -n kube-system: 指定kube-system命名空间 -o wide -o yaml -o json:以不同格式输出,也可写为 -owide -oyam -ojson
查看节点状态: kubectl get nodes 显示node节点的标签信息 kubectl get node --show-labels 查看pod列表 kubectl get pod 显示pod节点的标签信息 kubectl get pod --show-labels 根据指定标签匹配到具体的pod kubectl get pods -l app=example 查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息 kubectl get svc 获取所有资源信息: kubectl get all 查看命名空间 kubectl get ns 查看所有pod所属的命名空间 kubectl get pod --all-namespaces 查看所有pod所属的命名空间并且查看都在哪些节点上运行 kubectl get pod --all-namespaces -o wide 查看指定命名空间的 pod: # kubectl get pods -n kube-system
查看详情 describe
查看某个pod日志:
kubectl describe pod xxx
执行命令 exec
kubectl exec mypod date # 默认第一个容器(如果有多个的话) kubectl exec mypod -c ruby-container date # 指定pod,指定容器 kubectl exec mypod -i -t -- ls -t /usr
如果使用run,需要指定镜像,如:
新运行并进入busybox容器,退出后删除 kubectl run -it --image latelee/busybox dns-test --restart=Never --rm /bin/sh
编辑edit
编辑 ConfigMap:
kubectl edit cm coredns -n kube-system
节点标签
# 获取节点的标签 kubectl get nodes --show-labels # 添加节点的标签 kubectl label nodes edge-node ntype=hello # 删除节点的标签 kubectl label nodes edge-node ntype-
问题记录
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
用create创建,用apply更新,即产生此警告。实践发现可忽略。用apply创建,再用apply更新,无此警告。
今天的文章 我的k8s随笔:命令实践分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/101515.html