我们上一章介绍了Docker基本情况,目前在规模较大的容器集群基本都是Kubernetes,但是Kubernetes涉及的东西和概念确实是太多了,而且随着版本迭代功能在还增加,笔者有些功能也确实没用过,所以只能按照我自己的理解来讲解。
我们到目前为止已经将了很多Kubernetes的资源,对于我们操作这些资源的命令也很多,今天就来给大家一个总结。
kubectl get <resource>
: 列出某种类型的所有资源。例如,kubectl get pods
会列出默认命名空间所有的 Pods。
当然这个查询只能查询到最一些名字,时间等比较简单的信息。如果想要查询比较详细的信息则可以使用 -o yaml(也可以是json) 参数,我们前面讲过的备份也是通过这个参数。
kubectl get pod etcd-master01 -n kube-system -o yaml
我们在查询Pod的时候,有的时候并知道他在哪个命名空间,则我们可以使用-A参数(早期的版本还需要必须使用--all-namespaces参数),然后使用grep方式进行过滤。
kubectl get pod -A |grep apiserver
还有的是需要确定Pod对应的节点等信息,可以添加-o wide参数。
kubectl get pod -o wide
kubectl describe <resource> <name>:显示某个具体资源的详细信息。例如,kubectl describe pod my-pod
。这个主要用于查询资源的event事件,进行检查资源状态。
kubectl apply -f <file>
: 根据指定的 YAML 或 JSON 文件创建或更新资源。例如,kubectl apply -f deployment.yaml,可用于创建和更新。
kubectl create -f <file>
: 根据指定的 YAML 或 JSON 文件创建资源。与 apply
不同,create
仅用于创建操作。
kubectl edit <resource> <name>
: 编辑集群中的资源。这将打开一个文本编辑器供您修改当前资源的配置。
kubectl patch <resource> <name>: 更新某部分资源,这里的资源一般是这个更新这个资源的局部信息,比如更新副本数量:
kubectl patch deployment/my-deployment --type='merge' -p '{"spec":{"replicas":3}}'
kubectl delete <resource> <name>
: 删除某个具体资源。例如,kubectl delete pod my-pod
。
kubectl delete -f <file>
: 根据指定的 YAML 或 JSON 文件删除资源。
kubectl exec <pod> -- <command>
: 在指定的 Pod 中执行命令,也可以使用bash进入容器。例如,kubectl exec my-pod -- ls /
会在 my-pod
中执行 ls /
。
kubectl logs <pod>
: 获取 Pod 中容器的日志。如果 Pod 有多个容器,则需使用 -c <container>
指定容器。
kubectl attach <pod>
: 附加到正在运行的容器以查看输出流或交云控制台。
kubectl port-forward <pod> <local-port>:<pod-port>
: 将本地端口转发到 Pod 中的端口。
kubectl config view
: 查看 kubectl
的配置信息,包括集群、用户和上下文。
kubectl cluster-info
: 获取集群的端点信息。
kubectl top <node|pod>
: 显示节点或 Pod 的 CPU 和内存使用情况,需要安装监控组件才可以用。
管理节点
kubectl cordon:隔离节点,避免新Pod调度过来,用于维护服务器前准备工作。
kubectl uncordon:取消隔离,重新开放调度,维护结束以后恢复服务器。
kubectl drain:驱逐Pod,用于移除当前节点的Pod,才能对节点进行操作具体的维护操作。
kubectl taint:污点操作,用于控制节点的污点添加与删除,合理的进行调度。
kubeclt label:标签操作,用于操作资源的标签添加或者删除。
#添加标签
kubectl label <resource-type> <resource-name> <label-key>=<label-value>
#删除标签
kubectl label <resource-type> <resource-name> <label-key>-
kubectl rollout status <resource>/<name>
: 查看资源的部署状态。例如,kubectl rollout status deployment/my-deployment
。
kubectl rollout undo <resource>/<name>
: 回滚资源到之前的状态。例如,kubectl rollout undo deployment/my-deployment
。
kubectl scale <resource>/<name> --replicas=<num>
: 缩放资源的副本数。例如,kubectl scale deployment/my-deployment --replicas=3
。
#更新镜像,使用较多的命令
kubectl set image <resource>/<name> <container_name>=<new_image>:<tag>
kubectl set image deployment/my-deployment my-container=nginx:1.19
kubectl命令和KVM命令类似,都是把命令进行分类,有兴趣可以去对比下。
其实Kubernetes讲到这里,基本上的中小集群都已经可用正常使用,但是后面还有20+小节的内容会继续讲解。