如何使用 kubectl 命令查找关于 Kubernetes 主人的详细信息?

假设我想找到 k8s 主机的 kubelet 和 apiserver 版本,最好的方法是什么?

我知道以下命令:

kubectl cluster-info

它只显示端点。

kubectl get nodes; kubectl describe node <node>;

它显示非常详细的信息,但只显示节点,而不是主机。

还有

kubectl version

但那只能显示 Kubectl 版本,而不能显示 Kubelet 或 apiserver 版本。

我还可以使用哪些其他命令来标识集群的属性?

126332 次浏览

kubectl version also shows the apiserver version. For example, this is the output when I run it:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.4", GitCommit:"3eed1e3be6848b877ff80a93da3785d9034d0a4f", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.4", GitCommit:"3eed1e3be6848b877ff80a93da3785d9034d0a4f", GitTreeState:"clean"}

The second line ("Server Version") contains the apiserver version. There isn't a way to get the master's kubelet version if it isn't registered as one of the nodes (which it isn't if it isn't showing up in kubectl get nodes), but in most deployments it'll be the same version as the apiserver.

kubectl version --short will give you a short and sweet version of your k8-cluster

aathith@k8-master:~# kubectl version --short
Client Version: v1.18.1
Server Version: v1.18.1

edit 1:
In terminal 1

aathith@k8-master:~# kubectl proxy
Starting to serve on 127.0.0.1:8001

In terminal 2

aathith@k8-master:~# curl http://localhost:8001/version -k
{
"major": "1",
"minor": "18",
"gitVersion": "v1.18.1",
"gitCommit": "e0fccafd69541e3750d460ba0f9743b90336f24f",
"gitTreeState": "clean",
"buildDate": "2020-04-16T11:35:47Z",
"goVersion": "go1.13.9",
"compiler": "gc",
"platform": "linux/amd64"
}


yes i agree with above answers that most of the time kubectl version --short will be the same as kubelet's and apiserver version.

But according to k8s documentation : kubectl is supported within one minor version (older or newer) of kube-apiserver so there is a possibility that kubectl version can be different.

[Kubenetes doc screenshot] : https://i.stack.imgur.com/QSnlC.png

If you are able to see the nodes using kubectl get nodes then best way to get kubelet version by performing below commands

kubectl get nodes -o yaml | grep -i 'kubelet'
kubectl get nodes -o yaml | grep -i 'apiserver'

kubectl get nodes -o yaml | grep -i 'apiserver' output screenshot

kubectl get nodes -o yaml | grep -i 'kubelet' output screenshot

you can remove grep and search for other attributes also in yaml