从活动集群获取kube主组件的运行配置

时间:2019-08-06 15:23:11

标签: kubernetes controller

我们有一个带有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获取这些组件的当前配置的信息。

2 个答案:

答案 0 :(得分:1)

不是来自API(在撰写本文时)通常,组件配置是通过command line或/和Pod YAML清单文件传递的。通常,清单文件位于/etc/kubernetes/manifests

  • kube-apisever-> /etc/kubernetes/manifests/kube-apiserver.yaml
  • kube-controller-manager-> /etc/kubernetes/manifests/kube-apiserver.yaml
  • kube-scheduler-> /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有点不同。

  • kube-proxy-> kube-system命名空间中的kube-proxy ConfigMap YAML

要了解如何使用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