【工具使用】【MobaXterm】【K8S】Windows 上操作 K8S 集群
1 前言
本节主要说下如何在 Windows 上利用工具去操作我们的 K8S 集群,最重要的是你要有集群的 KubeConfig 信息 并且是开了公网访问的 ApiServer 当然内网网络通的情况下也可以。
2 准备工作
2.1 安装 MobaXterm
MobaXterm是远程计算的终极工具箱。在一个Windows应用程序中,它提供了大量的功能,这些功能是为程序员、网站管理员、it管理员以及几乎所有需要以更简单的方式处理远程工作的用户量身定制的。
MobaXterm在一个开箱即用的可移植exe文件中为Windows桌面提供了所有重要的远程网络工具(SSH、X11、RDP、VNC、FTP、MOSH…)和Unix命令(bash、ls、cat、sed、grep、awk、rsync…)。
为我们远程任务提供All-In-One网络应用程序有很多优点,例如,当您使用SSH连接到远程服务器时,会自动弹出一个图形SFTP浏览器,以便直接编辑您的远程文件。
您的远程应用程序也将使用嵌入式X服务器在Windows桌面上无缝显示。MobaXterm时专注于一个简单的目标:提出一个直观的用户界面,以便通过不同的网络或系统高效地访问远程服务器。
可以去官网下载,免费的就够用了。
2.2 安装 Kubectl
kubectl是Kubernetes的命令行工具(CLI),它是Kubernetes用户和管理员必备的管理工具。
kubectl提供了大量的子命令,方便管理Kubernetes集群中的各种功能。从用户的角度来看,kubectl是控制Kubernetes的驾驶舱,允许执行所有可能的Kubernetes操作。
从技术角度来看,kubectl是Kubernetes API的客户端,Kubernetes API是一个HTTP REST API。
kubectl安装在Kubernetes的master节点上,并通过与apiserver交互实现对k8s集群中各种资源的增删改查。
此外,kubectl允许用户指定命令空间、输出格式等选项,以获取资源的相关信息,并支持对资源进行创建、描述、删除等操作。
也是可以去官网下载:
下载完记得把它放到环境变量 Path 路径下,我这里偷了个懒直接把它放到了 JDK 的 bin目录下,哈哈哈:
3 连接集群
3.1 连接
默认的 home 映射的位置,找的很费劲,可以更改这个 home 目录映射到我们可以方便找的文件夹下:
比如我这里的:
然后在这个目录下,将你的 kubeconfig 放置到 home/.kube/config 文件里:
最后效果:
3.2 kubectl 相关操作
# 列出所有 namespace 中的所有 service $ kubectl get services # 列出所有 namespace 中的所有 pod $ kubectl get pods --all-namespaces # 列出所有 pod 并显示详细信息 $ kubectl get pods -o wide # 列出指定 deployment $ kubectl get deployment my-dep # 列出该 namespace 中的所有 pod 包括未初始化的 $ kubectl get pods --include-uninitialized # 使用详细输出来描述命令 $ kubectl describe nodes my-node $ kubectl describe pods my-pod # List Services Sorted by Name $ kubectl get services --sort-by=.metadata.name # 根据重启次数排序列出 pod $ kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' # 获取所有具有 app=cassandra 的 pod 中的 version 标签 $ kubectl get pods --selector=app=cassandra rc -o \ jsonpath='{.items[*].metadata.labels.version}' # 获取所有节点的 ExternalIP $ kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}' # 列出属于某个 PC 的 Pod 的名字 # “jq”命令用于转换复杂的 jsonpath,参考 https://stedolan.github.io/jq/ $ sel=${$(kubectl get rc my-rc --output=json | jq -j '.spec.selector | to_entries | .[] | "\(.key)=\(.value),"')%?} $ echo $(kubectl get pods --selector=$sel --output=jsonpath={.items..metadata.name}) # 查看哪些节点已就绪 $ JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}' \ && kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=True" # 列出当前 Pod 中使用的 Secret $ kubectl get pods -o json | jq '.items[].spec.containers[].env[]?.valueFrom.secretKeyRef.name' | grep -v null | sort | uniq
我本次用的:
# 我本次用的删除状态不对的pod kubectl get pods | grep Error | awk '{print$1}' | xargs kubectl delete pods docker images | grep bitsun | awk '{printf "docker rmi %s:%s\n", $1, $2}'
4 小结
好啦,本节就到这里啦,有理解不对的地方欢迎指正。