我的k8s随笔:命令实践
本文记录k8s实践时使用的命令。
本文记录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更新,无此警告。
更多推荐
所有评论(0)