143 lines
5.5 KiB
Markdown
143 lines
5.5 KiB
Markdown
---
|
||
description: 修改 Kubernetes apiserver 启动参数
|
||
---
|
||
|
||
# 修改 Kubernetes apiserver 启动参数
|
||
|
||
本文描述了修改 Kubernetes apiserver 启动参数的步骤。
|
||
|
||
如果您使用 kubeadm 安装 Kubernetes 集群,Kubernetes apiserver 通过 static pod 启动,其 yaml 文件的位置在 `/etc/kubernetes/manifests/kube-apiserver.yaml` 这个路径下,如下所示:(其中第 14 行到第 39 行,都是 kube-apiserver 的启动参数)
|
||
|
||
``` yaml {14-39}
|
||
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=172.17.184.171
|
||
- --allow-privileged=true
|
||
- --authorization-mode=Node,RBAC
|
||
- --client-ca-file=/etc/kubernetes/pki/ca.crt
|
||
- --enable-admission-plugins=NodeRestriction
|
||
- --enable-bootstrap-token-auth=true
|
||
- --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
|
||
- --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
|
||
- --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
|
||
- --etcd-servers=https://127.0.0.1:2379
|
||
- --insecure-port=0
|
||
- --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
|
||
- --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
|
||
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
|
||
- --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
|
||
- --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
|
||
- --requestheader-allowed-names=front-proxy-client
|
||
- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
|
||
- --requestheader-extra-headers-prefix=X-Remote-Extra-
|
||
- --requestheader-group-headers=X-Remote-Group
|
||
- --requestheader-username-headers=X-Remote-User
|
||
- --secure-port=6443
|
||
- --service-account-key-file=/etc/kubernetes/pki/sa.pub
|
||
- --service-cluster-ip-range=10.96.0.0/16
|
||
- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
|
||
- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
|
||
image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.1
|
||
imagePullPolicy: IfNotPresent
|
||
livenessProbe:
|
||
failureThreshold: 8
|
||
httpGet:
|
||
host: 172.17.184.171
|
||
path: /healthz
|
||
port: 6443
|
||
scheme: HTTPS
|
||
initialDelaySeconds: 15
|
||
timeoutSeconds: 15
|
||
name: kube-apiserver
|
||
...
|
||
```
|
||
|
||
假设您要向 Kubernetes apiserver 追加如下 oidc 参数时,将这些参数追加到该 yaml 文件的 `command` 字段中即可,
|
||
``` yaml
|
||
- --oidc-issuer-url=https://dex.demo.kuboard.cn:32001
|
||
- --oidc-client-id=kuboard-dex-client
|
||
- --oidc-username-claim=preferred_username
|
||
- --oidc-username-prefix=-
|
||
- --oidc-groups-claim=groups
|
||
- --oidc-groups-prefix=
|
||
```
|
||
|
||
修改后的文件如下所示:
|
||
``` yaml {40-45}
|
||
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=172.17.184.171
|
||
- --allow-privileged=true
|
||
- --authorization-mode=Node,RBAC
|
||
- --client-ca-file=/etc/kubernetes/pki/ca.crt
|
||
- --enable-admission-plugins=NodeRestriction
|
||
- --enable-bootstrap-token-auth=true
|
||
- --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
|
||
- --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt
|
||
- --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
|
||
- --etcd-servers=https://127.0.0.1:2379
|
||
- --insecure-port=0
|
||
- --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
|
||
- --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
|
||
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
|
||
- --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
|
||
- --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
|
||
- --requestheader-allowed-names=front-proxy-client
|
||
- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
|
||
- --requestheader-extra-headers-prefix=X-Remote-Extra-
|
||
- --requestheader-group-headers=X-Remote-Group
|
||
- --requestheader-username-headers=X-Remote-User
|
||
- --secure-port=6443
|
||
- --service-account-key-file=/etc/kubernetes/pki/sa.pub
|
||
- --service-cluster-ip-range=10.96.0.0/16
|
||
- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
|
||
- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
|
||
- --oidc-issuer-url=https://dex.demo.kuboard.cn:32001
|
||
- --oidc-client-id=kuboard-dex-client
|
||
- --oidc-username-claim=preferred_username
|
||
- --oidc-username-prefix=-
|
||
- --oidc-groups-claim=groups
|
||
- --oidc-groups-prefix=
|
||
image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.1
|
||
imagePullPolicy: IfNotPresent
|
||
livenessProbe:
|
||
failureThreshold: 8
|
||
httpGet:
|
||
host: 172.17.184.171
|
||
path: /healthz
|
||
port: 6443
|
||
scheme: HTTPS
|
||
initialDelaySeconds: 15
|
||
timeoutSeconds: 15
|
||
name: kube-apiserver
|
||
...
|
||
```
|
||
|
||
::: tip 生效
|
||
Static Pod 的配置文件被修改后,立即生效。
|
||
* Kubelet 会监听该文件的变化,当您修改了 `/etc/kubernetes/manifests/kube-apiserver.yaml` 文件之后,kubelet 将自动终止原有的 kube-apiserver-{nodename} 的 Pod,并自动创建一个使用了新配置参数的 Pod 作为替代。
|
||
* 如果您有多个 Kubernetes Master 节点,您需要在每一个 Master 节点上都修改该文件,并使各节点上的参数保持一致。
|
||
:::
|