我们有一个带有5个主节点和50个工作节点的kube集群。 kube集群在裸机服务器上运行,而不是作为容器运行。在集群初始化期间,我们会根据环境要求更新kube-api-server / scheduler / controller的参数,但不是所有选项。 像节点一样,我们可以使用API-:/ api / v1 / nodes // proxy / configz获取当前应用的kubelet配置,有没有一种方法可以获取当前配置(例如kube-api-qps,kube-api -burst等)用于主组件(控制器,调度程序)。
我可以在10252和10251上获得控制器和调度程序的度量标准和healthz。但是,我找不到如何通过API获取这些组件的当前配置的信息。
答案 0 :(得分:1)
不是来自API(在撰写本文时)通常,组件配置是通过command line或/和Pod YAML清单文件传递的。通常,清单文件位于/etc/kubernetes/manifests
/etc/kubernetes/manifests/kube-apiserver.yaml
/etc/kubernetes/manifests/kube-apiserver.yaml
/etc/kubernetes/manifests/kube-scheduler.yaml
例如minikube kube-apiserver
:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
- kube-apiserver
- --advertise-address=192.168.64.6
- --allow-privileged=true
- --authorization-mode=Node,RBAC
- --client-ca-file=/var/lib/minikube/certs/ca.crt
- --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota
- --enable-bootstrap-token-auth=true
- --etcd-cafile=/var/lib/minikube/certs/etcd/ca.crt
- --etcd-certfile=/var/lib/minikube/certs/apiserver-etcd-client.crt
- --etcd-keyfile=/var/lib/minikube/certs/apiserver-etcd-client.key
- --etcd-servers=https://127.0.0.1:2379
- --insecure-port=0
- --kubelet-client-certificate=/var/lib/minikube/certs/apiserver-kubelet-client.crt
- --kubelet-client-key=/var/lib/minikube/certs/apiserver-kubelet-client.key
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
...
kube-proxy有点不同。
要了解如何使用API,可以使用kubectl get --raw
命令。例如:
$ kubectl get --raw /
{
"paths": [
"/api",
"/api/v1",
"/apis",
"/apis/",
"/apis/admissionregistration.k8s.io",
"/apis/admissionregistration.k8s.io/v1beta1",
"/apis/apiextensions.k8s.io",
"/apis/apiextensions.k8s.io/v1beta1",
"/apis/apiregistration.k8s.io",
"/apis/apiregistration.k8s.io/v1",
...
答案 1 :(得分:0)
控制平面资源文件将存储在/ etc / kubernetes / manifests目录中。您可以从那里查看这些组件的配置。
或者您可以运行以下命令从运行的Pod中获取输出。
if serializer.is_valid():
obj = serializer.save()
new_pk = obj.pk
new_timestamp = obj.timestamp