天天看點

kube-apiserver啟動指令參數解釋

作者:小陳運維

在apiserver啟動時候會有很多參數來配置啟動指令,有些時候不是很明白這些參數具體指的是什麼意思。

kube-apiserver啟動指令參數解釋
我的kube-apiserver啟動指令參數:

cat > /usr/lib/systemd/system/kube-apiserver.service << EOF




[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/kubernetes/kubernetes
After=network.target




[Service]
ExecStart=/usr/local/bin/kube-apiserver \
      --v=2  \
      --logtostderr=true  \
      --allow-privileged=true  \
      --bind-address=0.0.0.0  \
      --secure-port=6443  \
      --insecure-port=0  \
      --advertise-address=192.168.1.30 \
      --service-cluster-ip-range=10.96.0.0/12  \
      --service-node-port-range=30000-32767  \
      --etcd-servers=https://192.168.1.30:2379,https://192.168.1.31:2379,https://192.168.1.32:2379 \
      --etcd-cafile=/etc/etcd/ssl/etcd-ca.pem  \
      --etcd-certfile=/etc/etcd/ssl/etcd.pem  \
      --etcd-keyfile=/etc/etcd/ssl/etcd-key.pem  \
      --client-ca-file=/etc/kubernetes/pki/ca.pem  \
      --tls-cert-file=/etc/kubernetes/pki/apiserver.pem  \
      --tls-private-key-file=/etc/kubernetes/pki/apiserver-key.pem  \
      --kubelet-client-certificate=/etc/kubernetes/pki/apiserver.pem  \
      --kubelet-client-key=/etc/kubernetes/pki/apiserver-key.pem  \
      --service-account-key-file=/etc/kubernetes/pki/sa.pub  \
      --service-account-signing-key-file=/etc/kubernetes/pki/sa.key  \
      --service-account-issuer=https://kubernetes.default.svc.cluster.local \
      --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname  \
      --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota  \
      --authorization-mode=Node,RBAC  \
      --enable-bootstrap-token-auth=true  \
      --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.pem  \
      --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.pem  \
      --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client-key.pem  \
      --requestheader-allowed-names=aggregator  \
      --requestheader-group-headers=X-Remote-Group  \
      --requestheader-extra-headers-prefix=X-Remote-Extra-  \
      --requestheader-username-headers=X-Remote-User
      # --token-auth-file=/etc/kubernetes/token.csv




Restart=on-failure
RestartSec=10s
LimitNOFILE=65535




[Install]
WantedBy=multi-user.target




EOF           

解釋

-v, --v int
日志級别詳細程度的數字。


--logtostderr     預設值:true
在标準錯誤而不是檔案中輸出日志記錄。
--bind-address string     預設值:"0.0.0.0"
用來監聽 --secure-port 端口的 IP 位址。叢集的其餘部分以及 CLI/web 用戶端必須可以通路所關聯的接口。如果為空白或未指定位址(0.0.0.0 或 ::),則将使用所有接口。


--secure-port int     預設值:6443
帶身份驗證和鑒權機制的 HTTPS 服務端口。不能用 0 關閉。


--advertise-address string
向叢集成員通知 apiserver 消息的 IP 位址。這個位址必須能夠被叢集中其他成員通路。如果 IP 位址為空,将會使用 --bind-address, 如果未指定 --bind-address,将會使用主機的預設接口位址。


--service-cluster-ip-range string
CIDR 表示的 IP 範圍用來為服務配置設定叢集 IP。此位址不得與指定給節點或 Pod 的任何 IP 範圍重疊。


--service-node-port-range <形式為 'N1-N2' 的字元串>     預設值:30000-32767
保留給具有 NodePort 可見性的服務的端口範圍。例如:"30000-32767"。範圍的兩端都包括在内。


--etcd-servers strings
要連接配接的 etcd 伺服器清單(scheme://ip:port),以逗号分隔。


--etcd-cafile string
用于保護 etcd 通信的 SSL 證書頒發機構檔案。


--etcd-certfile string
用于保護 etcd 通信的 SSL 證書檔案。


--etcd-keyfile string
用于保護 etcd 通信的 SSL 密鑰檔案。


--client-ca-file string
如果已設定,則使用與用戶端證書的 CommonName 對應的辨別對任何出示由 client-ca 檔案中的授權機構之一簽名的用戶端證書的請求進行身份驗證。


--tls-cert-file string
包含用于 HTTPS 的預設 x509 證書的檔案。(CA 證書(如果有)在伺服器證書之後并置)。如果啟用了 HTTPS 服務,并且未提供 --tls-cert-file 和 --tls-private-key-file, 為公共位址生成一個自簽名證書和密鑰,并将其儲存到 --cert-dir 指定的目錄中。


--tls-private-key-file string
包含比對 --tls-cert-file 的 x509 證書私鑰的檔案。


--kubelet-client-certificate string
TLS 的用戶端證書檔案的路徑。


--kubelet-client-key string
TLS 用戶端密鑰檔案的路徑。


--service-account-key-file strings
包含 PEM 編碼的 x509 RSA 或 ECDSA 私鑰或公鑰的檔案,用于驗證 ServiceAccount 令牌。指定的檔案可以包含多個鍵,并且可以使用不同的檔案多次指定标志。如果未指定,則使用 --tls-private-key-file。提供 --service-account-signing-key 時必須指定。


--service-account-signing-key-file string
包含服務帳戶令牌頒發者目前私鑰的檔案的路徑。頒發者将使用此私鑰簽署所頒發的 ID 令牌。


--service-account-issuer strings
服務帳号令牌頒發者的辨別符。頒發者将在已辦法令牌的 "iss" 聲明中檢查此辨別符。此值為字元串或 URI。如果根據 OpenID Discovery 1.0 規範檢查此選項不是有效的 URI,則即使特性門控設定為 true, ServiceAccountIssuerDiscovery 功能也将保持禁用狀态。強烈建議該值符合 OpenID 規範:https://openid.net/specs/openid-connect-discovery-1_0.html。實踐中,這意味着 service-account-issuer 取值必須是 HTTPS URL。還強烈建議此 URL 能夠在 {service-account-issuer}/.well-known/openid-configuration 處提供 OpenID 發現文檔。當此值被多次指定時,第一次的值用于生成令牌,所有的值用于确定接受哪些發行人。


--kubelet-preferred-address-types strings     預設值:Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP
用于 kubelet 連接配接的首選 NodeAddressTypes 清單。


--enable-admission-plugins stringSlice
除了預設啟用的插件(NamespaceLifecycle、LimitRanger、ServiceAccount、TaintNodesByCondition、PodSecurity、Priority、DefaultTolerationSeconds、DefaultStorageClass、StorageObjectInUseProtection、PersistentVolumeClaimResize、RuntimeClass、CertificateApproval、CertificateSigning、CertificateSubjectRestriction、DefaultIngressClass、MutatingAdmissionWebhook、ValidatingAdmissionWebhook、ResourceQuota)之外要啟用的插件
取值為逗号分隔的準入插件清單:AlwaysAdmit、AlwaysDeny、AlwaysPullImages、CertificateApproval、CertificateSigning、CertificateSubjectRestriction、DefaultIngressClass、DefaultStorageClass、DefaultTolerationSeconds、DenyServiceExternalIPs、EventRateLimit、ExtendedResourceToleration、ImagePolicyWebhook、LimitPodHardAntiAffinityTopology、LimitRanger、MutatingAdmissionWebhook、NamespaceAutoProvision、NamespaceExists、NamespaceLifecycle、NodeRestriction、OwnerReferencesPermissionEnforcement、PersistentVolumeClaimResize、PersistentVolumeLabel、PodNodeSelector、PodSecurity、PodSecurityPolicy、PodTolerationRestriction、Priority、ResourceQuota、RuntimeClass、SecurityContextDeny、ServiceAccount、StorageObjectInUseProtection、TaintNodesByCondition、ValidatingAdmissionWebhook
該标志中插件的順序無關緊要。


--authorization-mode stringSlice     預設值:"AlwaysAllow"
在安全端口上進行鑒權的插件的順序清單。逗号分隔的清單:AlwaysAllow、AlwaysDeny、ABAC、Webhook、RBAC、Node。


--enable-bootstrap-token-auth
啟用以允許将 "kube-system" 名字空間中類型為 "bootstrap.kubernetes.io/token" 的 Secret 用于 TLS 引導身份驗證。


--requestheader-client-ca-file string
在信任請求頭中以 --requestheader-username-headers 訓示的使用者名之前, 用于驗證接入請求中用戶端證書的根證書包。警告:一般不要假定傳入請求已被授權。


--proxy-client-cert-file string
當必須調用外部程式以處理請求時,用于證明聚合器或者 kube-apiserver 的身份的用戶端證書。包括代理轉發到使用者 api-server 的請求和調用 Webhook 準入控制插件的請求。Kubernetes 期望此證書包含來自于 --requestheader-client-ca-file 标志中所給 CA 的簽名。該 CA 在 kube-system 命名空間的 "extension-apiserver-authentication" ConfigMap 中公開。從 kube-aggregator 收到調用的元件應該使用該 CA 進行各自的雙向 TLS 驗證。


--proxy-client-key-file string
當必須調用外部程式來處理請求時,用來證明聚合器或者 kube-apiserver 的身份的用戶端私鑰。這包括代理轉發給使用者 api-server 的請求和調用 Webhook 準入控制插件的請求。


--requestheader-allowed-names strings
此值為用戶端證書通用名稱(Common Name)的清單;表中所列的表項可以用來提供使用者名, 方式是使用 --requestheader-username-headers 所指定的頭部。如果為空,能夠通過 --requestheader-client-ca-file 中機構 認證的用戶端證書都是被允許的。


--requestheader-group-headers strings
用于查驗使用者組的請求頭部清單。建議使用 X-Remote-Group。


--requestheader-extra-headers-prefix strings
用于查驗請求頭部的字首清單。建議使用 X-Remote-Extra-。


--requestheader-username-headers strings
用于查驗使用者名的請求頭頭清單。建議使用 X-Remote-User。


--token-auth-file string
如果設定該值,這個檔案将被用于通過令牌認證來保護 API 服務的安全端口。


官方文檔:
https://kubernetes.io/zh/docs/reference/command-line-tools-reference/kube-apiserver/           

https://www.oiox.cn/

https://www.chenby.cn/

https://cby-chen.github.io/

https://weibo.com/u/5982474121

https://blog.csdn.net/qq_33921750

https://my.oschina.net/u/3981543

https://www.zhihu.com/people/chen-bu-yun-2

https://segmentfault.com/u/hppyvyv6/articles

https://juejin.cn/user/3315782802482007

https://space.bilibili.com/352476552/article

https://cloud.tencent.com/developer/column/93230

https://www.jianshu.com/u/0f894314ae2c

https://www.toutiao.com/c/user/token/MS4wLjABAAAAeqOrhjsoRZSj7iBJbjLJyMwYT5D0mLOgCoo4pEmpr4A/

CSDN、GitHub、知乎、開源中國、思否、掘金、簡書、騰訊雲、哔哩哔哩、今日頭條、新浪微網誌、個人部落格、全網可搜《小陳運維》

繼續閱讀