kube-apiserver 參數(shù)
kube-apiserver對(duì)外暴露了Kubernetes API。它是的 Kubernetes 前端控制層。
參數(shù)名 | 含義 | 默認(rèn)值 | |
---|---|---|---|
通用參數(shù) | ======================================================================================================== | ===== | |
advertise-address | 用于向集群通告 apiserver 的 IP 地址。該地址必須可由集群的其余組件訪問(wèn)。 | 如果為空,則使用--bind-address。 如果未指定--bind-address,將使用主機(jī)的默認(rèn)接口。 | |
cloud-provider-gce-lb-src-cidrs | CIDRs opened in GCE firewall for LB traffic proxy & health checks | default 130.211.0.0/22,209.85.152.0/22,209.85.204.0/22,35.191.0.0/16 | |
cors-allowed-origins | List of allowed origins for CORS, comma separated. An allowed origin can be a regular expression to support subdomain matching. | ||
default-not-ready-toleration-seconds | notReady 容忍時(shí)間,NoExecute that is added by default to every pod that does not already have such a toleration. | 300 | |
default-unreachable-toleration-seconds | unreachable 容忍時(shí)間,NoExecute that is added by default to every pod that does not already have such a toleration. | 300 | |
external-hostname | The hostname to use when generating externalized URLs for this master (e.g. Swagger API Docs). | ||
feature-gates | 一組key = value對(duì),用于描述特征處于alpha / experimental狀態(tài) | ||
master-service-namespace | 廢棄:the namespace from which the kubernetes master services should be injected into pods | default | |
max-mutating-requests-inflight | 在給定時(shí)間內(nèi)的最大 mutating 請(qǐng)求數(shù)。 當(dāng)服務(wù)器超過(guò)此值時(shí),它會(huì)拒絕請(qǐng)求。 0表示無(wú)限制。 | 200 | |
max-requests-inflight | 在給定時(shí)間內(nèi)的最大 non-mutating 請(qǐng)求數(shù)。 當(dāng)服務(wù)器超過(guò)此值時(shí),它會(huì)拒絕請(qǐng)求。 0表示無(wú)限制。 | 400 | |
min-request-timeout | 表示處理程序在請(qǐng)求超時(shí)之前必須至少鏈接多久。 目前只有監(jiān)視請(qǐng)求處理程序能處理該值,會(huì)選擇高于此數(shù)字的隨機(jī)值作為連接超時(shí),以分散負(fù)載。 | 1800 | |
request-timeout | 表示處理程序在請(qǐng)求超時(shí)之前必須至少鏈接多久。這是默認(rèn)請(qǐng)求超時(shí),但可能會(huì)被其他參數(shù)覆蓋,比如 min-request-timeout | 1m | |
target-ram-mb | apiserver的內(nèi)存限制(MB)用于配置緩存大小等 | ||
etcd 參數(shù) | ======================================================================================================== | ===== | |
default-watch-cache-size | 默認(rèn)監(jiān)視緩存大小。0 表示對(duì)于沒(méi)有設(shè)置默認(rèn)監(jiān)視大小的資源,將禁用監(jiān)視緩存。 | 100 | |
delete-collection-workers | DeleteCollection調(diào)用時(shí)生成的worker數(shù)。被用來(lái)加速命名空間清理。 | 1 | |
enable-garbage-collector | 啟用通用垃圾收集器。必須與kube-controller-manager的相應(yīng)參數(shù)一起使用。 | true | |
encryption-provider-config | 配置etcd中存儲(chǔ)secrets的加密程序的文件 | ||
etcd-cafile | 保護(hù)etcd通信的SSL證書頒發(fā)機(jī)構(gòu)文件 | ||
etcd-certfile | 用于保護(hù)etcd通信的SSL認(rèn)證文件 | ||
etcd-compaction-interval | 壓縮請(qǐng)求的間隔。如果為0,則禁用來(lái)自apiserver的壓縮請(qǐng)求。 | 5m0s | |
etcd-count-metric-poll-period | Frequency of polling etcd for number of resources per type 。0 表示禁用 metric collection | 1m0s | |
etcd-keyfile | 用于保護(hù)etcd通信的SSL密鑰文件 | ||
etcd-prefix | etcd中所有資源路徑的前綴 | / registry | |
etcd-servers | 要連接的etcd服務(wù)器列表(scheme:// ip:port),逗號(hào)分隔。 | ||
etcd-servers-overrides | 每個(gè)資源的etcd服務(wù)器覆蓋,逗號(hào)分隔。單個(gè)覆蓋格式:group / resource#servers,servers是URL,用分號(hào)分隔。 | ||
storage-backend | 存儲(chǔ)后端的持久性 | etcd3 | |
storage-media-type | 存儲(chǔ)對(duì)象的媒體類型。 某些僅支持特定媒體類型的資源或存儲(chǔ)后端將忽略此設(shè)置。 | application/vnd.kubernetes.protobuf | |
watch-cache | 在apiserver中啟用監(jiān)視緩存 | true | |
watch-cache-sizes | 每個(gè)資源的監(jiān)視緩存大小列表,以逗號(hào)分隔。格式:resource [.group] #size。啟用監(jiān)視緩存時(shí)生效。 一些資源有系統(tǒng)默認(rèn)值,其他默認(rèn)為 default-watch-cache-size | ||
安全服務(wù)參數(shù) | ======================================================================================================== | ===== | |
bind-address | 監(jiān)聽(tīng)安全端口的IP地址,接口必須可由集群的其他組件以及CLI / Web客戶端訪問(wèn)。 | 如果空白,將使用接口(所有IPv4接口為0.0.0.0,所有IPv6接口為::) | (默認(rèn)0.0.0.0) |
cert-dir | TLS證書所在的目錄。如果提供了--tls-cert-file和--tls-private-key-file,則將忽略此參數(shù)。 | / var / run / kubernetes | |
http2-max-streams-per-connection | api server 提供給 client 在HTTP / 2連接中的最大 stream 數(shù)。0 表示用golang的默認(rèn)值。 | ||
secure-port | 使用身份驗(yàn)證和授權(quán)為HTTPS提供服務(wù)的端口。無(wú)法使用0關(guān)閉 | 6443 | |
tls-cert-file | 包含HTTPS的默認(rèn)x509證書的文件。 CA證書,如果有的話,在服務(wù)器證書之后連接。如果啟用了HTTPS服務(wù),但是 --tls-cert-file和--tls-private-key-file 未提供,則會(huì)為公共地址生成自簽名證書和密鑰,并將其保存到--cert-dir指定的目錄中。 | ||
tls-cipher-suites | 密碼套件列表。如果省略,將使用默認(rèn)的Go密碼套件。 | ||
tls-min-version | 支持最低TLS版本。 可能的值:VersionTLS10,VersionTLS11,VersionTLS12 | ||
tls-private-key-file | 與 --tls-cert-file 匹配的默認(rèn)x509私鑰。 | ||
tls-sni-cert-key | 一對(duì)x509證書和私鑰文件路徑。示例:“example.crt,example.key” | [] | |
非安全參數(shù) | ======================================================================================================== | ===== | |
insecure-bind-address | (已棄用:此參數(shù)在將來(lái)的版本中刪除。)用于提供--insecure-port的IP地址(對(duì)于所有IPv4接口設(shè)置為0.0.0.0,對(duì)于所有IPv6接口設(shè)置為::) | 默認(rèn)為127.0.0.1 | |
insecure-port | (已棄用:此參數(shù)將在以后的版本中刪除。)用于提供不安全,未經(jīng)身份驗(yàn)證的訪問(wèn)的端口。 | 8080 | |
審計(jì)參數(shù) | ======================================================================================================== | ===== | |
audit-dynamic-configuration | 啟用動(dòng)態(tài)審計(jì)配置。此功能還需要 DynamicAuditing 特征門開(kāi)啟 | ||
audit-log-batch-buffer-size | 批處理寫前存儲(chǔ)緩沖區(qū)的大小。僅用于批處理模式。 | 10000 | |
audit-log-batch-max-size | 批次的最大大小。僅用于批處理模式。 | 1 | |
audit-log-batch-max-wait | 強(qiáng)制寫入未達(dá)到最大大小的批處理之前等待的時(shí)間。僅用于批處理模式。 | ||
audit-log-batch-throttle-burst | 如果之前未使用限流QPS,則表示在同一時(shí)刻發(fā)送的最大請(qǐng)求數(shù)。僅用于批處理模式。 | ||
audit-log-batch-throttle-enable | 啟用批量限流限制。僅用于批處理模式。 | ||
audit-log-batch-throttle-qps | 每秒最大平均批次數(shù)。僅用于批處理模式。 | ||
audit-log-format | 審核日志的格式。 “l(fā)egacy”表示每個(gè)事件1行。 “json”表示結(jié)構(gòu)化的json格式。 | legacy,json | |
audit-log-maxage | 保留舊審核日志文件的最大天數(shù) | ||
audit-log-maxbackup | 要保留的最大審核日志文件數(shù) | ||
audit-log-maxsize | 審計(jì)日志文件回滾前的最大大小(兆字節(jié))。 | ||
audit-log-mode | 發(fā)送審計(jì)事件的策略。Blocking 表示發(fā)送事件應(yīng)阻塞服務(wù)器響應(yīng)。批處理導(dǎo)致后端緩沖并異步寫入事件。 | 阻止 | |
audit-log-path | 所有發(fā)送到 apiserver 的請(qǐng)求都將記錄到此文件中。 '-'表示標(biāo)準(zhǔn)輸出。 不指定此參數(shù)會(huì)禁用日志后端 | ||
audit-log-truncate-enabled | 是否啟用事件和批截?cái)?/td> | ||
audit-log-truncate-max-batch-size | 發(fā)送到底層后端的批處理的最大大小。實(shí)際的序列化大小可以大于幾百個(gè)字節(jié)。如果批次超過(guò)此限制,則會(huì)將其拆分為多個(gè)批量較小的批次 | 10485760 | |
audit-log-truncate-max-event-size | 發(fā)送到底層后端的審計(jì)事件的最大大小。如果事件的大小大于此數(shù)字,則刪除第一個(gè)請(qǐng)求和響應(yīng),如果還不夠小,事件將被丟棄。 | 102400 | |
audit-log-version | 用于序列化寫入日志的審核事件的API組和版本。 | audit.k8s.io/v1 | |
audit-policy-file | 定義審核策略配置的文件的路徑。 | ||
audit-webhook-batch-buffer-size | 在批處理和寫入之前存儲(chǔ)事件的緩沖區(qū)的大小。僅用于批處理模式 | 10000 | |
audit-webhook-batch-max-size | 批次的最大大小。僅用于批處理模式。 | 400 | |
audit-webhook-batch-max-wait | 強(qiáng)制寫入未達(dá)到最大大小的批處理之前的等待時(shí)間。僅用于批處理模式。 | 30s | |
audit-webhook-batch-throttle-burst | 如果之前未使用ThrottleQPS,則表示在同一時(shí)刻發(fā)送的最大請(qǐng)求數(shù)。僅用于批處理模式。 | 默認(rèn)15 | |
audit-webhook-batch-throttle-enable | 啟用批量限制。僅用于批處理模式。 | true | |
audit-webhook-batch-throttle-qps | 每秒最大平均批次數(shù)。僅用于批處理模式。 | 10 | |
audit-webhook-config-file | 定義審計(jì) webhook 配置的 kubeconfi g格式文件的路徑。 | ||
audit-webhook-initial-backoff | 重試第一個(gè)失敗請(qǐng)求之前等待的時(shí)間。 (默認(rèn)10秒) | ||
audit-webhook-mode | 定義緩沖策略。batch - 緩沖事件并分批異步處理它們。這是默認(rèn)值。blocking - 阻止API服務(wù)器響應(yīng)處理每個(gè)單獨(dú)的事件。blocking-strict - 與阻止相同,但在RequestReceived階段的審核日志記錄期間出現(xiàn)故障時(shí),對(duì)apiserver的整個(gè)請(qǐng)求將失敗 | batch | |
audit-webhook-truncate-enabled | 啟用事件和批截?cái)?/td> | ||
audit-webhook-truncate-max-batch-size | 發(fā)送到底層后端的批處理的最大大小。實(shí)際的序列化大小可以大幾百個(gè)字節(jié)。如果批次超過(guò)此限制,則會(huì)將其拆分為多個(gè)批量較小的批次。 | 1048 | |
audit-webhook-truncate-max-event-size | 發(fā)送到基礎(chǔ)后端的審計(jì)事件的最大大小。 如果事件的大小大于此數(shù)字,則刪除第一個(gè)請(qǐng)求和響應(yīng),如果還不夠大小,事件將被丟棄。 | 102400 | |
audit-webhook-version | 序列化寫入webhook的審核事件的API組和版本。 | audit.k8s.io/v1 | |
功能參數(shù) | ======================================================================================================== | ===== | |
contention-profiling | 如果啟用了性能分析,則啟用鎖爭(zhēng)用分析 | ||
enable-swagger-ui | 在 apiserver 的/swagger-ui上啟用swagger ui | ||
profiling | 通過(guò)Web界面啟用性能分析 host:port/debug/pprof/ | true | |
認(rèn)證參數(shù) | ======================================================================================================== | ===== | |
anonymous-auth | 啟用對(duì)訪問(wèn) API server 安全端口的匿名請(qǐng)求。沒(méi)有被其他身份驗(yàn)證方法拒絕的請(qǐng)求被視為匿名請(qǐng)求。 | true | |
api-audiences | API的標(biāo)識(shí)符。service account token 驗(yàn)證器將驗(yàn)證對(duì) API 使用的 token 是否是列表中的一個(gè)。如果啟動(dòng)了 service-account-issuer 參數(shù),但 api-audiences 參數(shù)沒(méi)有使用,該字段默認(rèn)為包含發(fā)行者URL的單元素列表。 | ||
authentication-token-webhook-cache-ttl | 緩存身份驗(yàn)證策略的時(shí)間 | 2m0s | |
authentication-token-webhook-config-file | 一個(gè)描述如何訪問(wèn)遠(yuǎn)程 webhook 服務(wù)的 kubeconfig 文件。API server 將查詢遠(yuǎn)程服務(wù)以確定 bearer token。 | ||
basic-auth-file | 啟用基本身份驗(yàn)證 | ||
client-ca-file | 啟用客戶端證書認(rèn)證。該參數(shù)引用的文件中必須包含一個(gè)或多個(gè)證書頒發(fā)機(jī)構(gòu),用于驗(yàn)證提交給該組件的客戶端證書。如果客戶端證書已驗(yàn)證,則用其中的 Common Name 作為請(qǐng)求的用戶名 | ||
enable-bootstrap-token-auth | 啟用 Bootstrap Token Authenticator。啟用該功能時(shí), Controller Manager 上的 --controllers 參數(shù)必須啟用 TokenCleaner。允許“kube-system” 中的“bootstrap.kubernetes.io/token”類型的 secret 用于 TLS 引導(dǎo)身份驗(yàn)證。 | ||
oidc-ca-file | OpenID服務(wù)器的證書將由 oidc-ca-file 的進(jìn)行驗(yàn)證 | 主機(jī)的根CA集。 | |
oidc-client-id | 如果設(shè)置了oidc-issuer-url,則必須設(shè)置OpenID Connect客戶端的客戶端ID。所有的 token 必須為其頒發(fā)的客戶端 ID | ||
oidc-groups-claim | JWT聲明使用的用戶組。該參數(shù)目前 experimental。 | ||
oidc-group-prefix | 所有組都將以該值作為前綴,防止與其他身份驗(yàn)證策略沖突。 | ||
oidc-issuer-url | OpenID發(fā)行者的URL,僅接受HTTPS方案。如果設(shè)置了,它將用于驗(yàn)證OIDC JSON Webtoken(JWT)。 | ||
oidc-required-claim | 一個(gè)鍵值對(duì)用于描述IDtoken中必要的聲明。如果設(shè)置,則驗(yàn)證該聲明是否以匹配值存在于IDtoken中。重復(fù)此參數(shù)以指定多個(gè)claim。 | ||
oidc-signing-algs | JOSE非對(duì)稱簽名算法的列表。不包含在此列表中的以“alg”開(kāi)頭的JWT將被拒絕。該值由RFC 7518定義 | [RS256] | |
oidc-username-claim | 把OpenID聲明作為用戶名。注意,除了default('sub')之外的聲明不是唯一的,也不是不可變的。此參數(shù) experimental, | sub | |
oidc-username-prefix | 所有用戶名將以此值作為前綴。如果沒(méi)有提供,除了“email”之外的用戶名聲明會(huì)由 issuer URL作為前綴,以避免沖突。“-”表示跳過(guò)前綴 | ||
requestheader-allowed-names | Common Name 列表。如果設(shè)置了,則在檢查用戶名的請(qǐng)求 header 之前, 必須提供指定列表中 Common Name 的有效客戶端證書。如果為空,則允許使用任何 Common Name。 | ||
requestheader-client-ca-file | PEM 編碼的證書包。在檢查用戶名的請(qǐng)求 header 之前,必須針對(duì)指定文件中的證書頒發(fā)機(jī)構(gòu)提交并驗(yàn)證有效的客戶端證書 | ||
requestheader-extra-headers-prefix | 要檢查的請(qǐng)求頭前綴列表。建議使用 X-Remote-Extra- | ||
requestheader-group-headers | 要檢查組的請(qǐng)求頭列表。建議采用X-Remote組。 | ||
requestheader-username-header | 要檢查用戶名的請(qǐng)求頭列表。一般使用X-Remote-User | ||
service-account-issuer | service account token 發(fā)布者的標(biāo)識(shí)符。發(fā)布者將在發(fā)布的token的“iss”字段中聲明該標(biāo)識(shí)符。該值是字符串或URI。 | ||
service-account-key-file | 包含PEM編碼的x509 RSA或ECDSA私鑰或公鑰的文件,用于驗(yàn)證ServiceAccounttoken。指定的文件可以包含多個(gè)鍵,參數(shù)可以用不同的文件多次指定。如果未指定,則使用--tls-private-key-file。如果使用--service-account-signing-key參數(shù),必須有該參數(shù) | ||
service-account-lookup | 如果啟用,從 API 中刪除掉的 token 將被撤銷 | true | |
service-account-max-token-expiration | service account token 發(fā)布者創(chuàng)建token的最長(zhǎng)有效期。如果請(qǐng)求一個(gè)有效期限大于此值的其他合法 TokenRequest,將發(fā)布一個(gè)有效期為此值的token。 | ||
token-auth-file | 該文件是一個(gè)至少包含3列的csv文件:token,用戶名,用戶uid,后跟可選的組名。API server 從文件讀取 bearer token,請(qǐng)求的 Authorization header 中要包含 Bearer token 的值。token無(wú)限期地持續(xù),并且如果不重新啟動(dòng) API Server,則無(wú)法更改token列表。該文件通過(guò) token authentication 保證 API server 安全端口的安全。 | ||
授權(quán)參數(shù) | ======================================================================================================== | ===== | |
authorization-mode | 在安全端口上執(zhí)行授權(quán)的有序插件列表。(AlwaysAllow,AlwaysDeny,ABAC,Webhook,RBAC,Node) | AlwaysAllow | |
authorization-policy-file | 具有csv格式的授權(quán)策略的文件,與--authorization-mode = ABAC 一起使用。 | ||
authorization-webhook-cache-authorized-ttl | 緩存 webhook 授權(quán)程序的“授權(quán)”響應(yīng)的持續(xù)時(shí)間。 | 5m0s | |
authorization-webhook-cache-unauthorized-ttl | 緩存 webhook 授權(quán)程序的“未授權(quán)”響應(yīng)的持續(xù)時(shí)間。 | 30秒 | |
authorization-webhook-config-file | 使用 kubeconfig 格式的webhook配置文件,與--authorization-mode = Webhook一起使用。 API服務(wù)器將查詢遠(yuǎn)程服務(wù)以確定對(duì) API server 的安全端口的訪問(wèn)。 | ||
云提供商參數(shù) | ======================================================================================================== | ===== | |
cloud-config | 云提供商提供配置文件的路徑。 沒(méi)有配置文件就使用空字符串。 | ||
cloud-provider | 云服務(wù)提供商。 沒(méi)有提供者就使用空字符串。 | ||
API啟用參數(shù) | ======================================================================================================== | ===== | |
runtime-config | 一組key = value對(duì),可能傳給apiserver的運(yùn)行時(shí)配置。 <group> / <version>(或核心組的<version>)鍵可用于打開(kāi)/關(guān)閉特定的api版本。 api / all是控制所有api版本的特殊鍵,默認(rèn)設(shè)置為false,除非你知道你做了什么。 api / legacy已棄用,我們將來(lái)會(huì)將其刪除,請(qǐng)停止使用它。 | ||
準(zhǔn)入?yún)?shù) | ======================================================================================================== | ===== | |
admission-control | 插件順序無(wú)先后。(已棄用:使用--enable-admission-plugins或--disable-admission-plugins代替。將在以后的版本中刪除。) | ||
admission-control-config-file | 具有準(zhǔn)入控制配置的文件。 | ||
disable-admission-plugins | 禁用位于默認(rèn)啟用的插件列表的插件。插件順序無(wú)先后。 | ||
enable-admission-plugins | 除了默認(rèn)啟用的插件之外應(yīng)該啟用的插件插件。插件順序無(wú)先后。默認(rèn)插件列表:(NamespaceLifecycle, LimitRanger, ServiceAccount, Priority,DefaultTolerationSeconds, DefaultStorageClass, PersistentVolumeClaimResize, MutatingAdmissionWebhook, ValidatingAdmissionWebhook, ResourceQuota) | ||
其他參數(shù) | ======================================================================================================== | ===== | |
allow-privileged | 如果為true,則允許特權(quán)容器。 | FALSE | |
apiserver-count | 集群中運(yùn)行的 api server 數(shù)量,必須為正數(shù)。 (在啟用--endpoint-reconciler-type = master-count時(shí)使用。) | 1 | |
enable-aggregator-routing | 將聚合器請(qǐng)求路由到端點(diǎn)IP而不是集群IP。 | ||
enable-logs-handler | 如果為true,為 apiserver 日志安裝 /logs 處理程序。 |
true | |
endpoint-reconciler-type | 使用端點(diǎn)協(xié)調(diào)器 | lease | |
event-ttl | 保留事件的時(shí)間。 | 1h0m0s | |
kubelet-certificate-authority | 證書頒發(fā)機(jī)構(gòu)的證書文件的路徑。 | ||
kubelet-client-certificate | TLS 客戶端證書文件的路徑。 | ||
kubelet-client-key | TLS 客戶端密鑰文件的路徑。 | ||
kubelet-HTTPS | 使用 https 進(jìn)行kubelet連接。 | 默認(rèn)為true | |
kubelet-preferred-address-types | 用于kubelet連接的首選NodeAddressType的列表。 | [Hostname,InternalDNS,InternalIP,ExternalDNS,ExternalIP] | |
kubelet-read-only-port | 棄用:kubelet端口。 | 10255 | |
kubelet-timeout | kubelet 操作超時(shí)時(shí)間。 | 5s | |
kubernetes-service-node-port | 如果非零,則Kubernetes主服務(wù)(apiserver創(chuàng)建/維護(hù)的)是 NodePort 類型,使用此值作為端口的值。如果為零,則為Kubernetes主服務(wù)將是ClusterIP類型。 | ||
max-connection-bytes-per-sec | 如果非零,則將每個(gè)用戶連接限制為此字節(jié)數(shù)/秒。目前僅適用于長(zhǎng)時(shí)間運(yùn)行的請(qǐng)求。 | ||
proxy-client-cert-file | 在一個(gè)必須驗(yàn)證聚合器或kube-apiserver的身份的請(qǐng)求中,用來(lái)驗(yàn)證的客戶端證書,包括api-server的請(qǐng)求代理給以及對(duì)webhook準(zhǔn)入插件的調(diào)用。此證書包括來(lái)自--requestheader-client-ca-file中的CA的簽名。該CA在kube-system命名空間的 “extension-apiserver-authentication” 配置文件中。被 kube-aggregator 調(diào)用的組件應(yīng)該使用該CA來(lái)執(zhí)行其TLS驗(yàn)證。 | ||
proxy-client-key-file | 客戶端證書的私鑰,用于在請(qǐng)求期間必須證明聚合器或kube-apiserver的身份時(shí)。包括api-server的請(qǐng)求代理給以及對(duì)webhook準(zhǔn)入插件的調(diào)用。 | ||
service-account-signing-key-file | 包含service accounttoken頒發(fā)者的當(dāng)前私鑰的文件路徑。發(fā)行人將使用此私鑰簽署已發(fā)行的IDtoken。 (需要'TokenRequest') | ||
service-cluster-ip-range | CIDR表示IP范圍,用于分配服務(wù)集群IP。這不能與分配給pod節(jié)點(diǎn)的IP重疊。 | 10.0.0.0/24 | |
service-node-port-range | 為 NodePort 可見(jiàn)的服務(wù)保留的端口范圍。包含兩個(gè)端點(diǎn)。 | 30000-32767 | |
全局參數(shù) | ======================================================================================================== | ===== | |
alsologtostderr | 日志信息同時(shí)輸出到stderr及文件 | ||
help | 幫助 | ||
log-backtrace-at | 當(dāng)日志命中行文件時(shí):N,觸發(fā)堆棧跟蹤 | 0 | |
log-dir | 如果非空,則在此目錄中寫入日志文件 | ||
log-file | 如果非空,請(qǐng)使用此日志文件 | ||
log-flush-frequency | 日志刷新之間的最大秒數(shù) | 5s | |
logtostderr | 日志信息輸出到stderr 而不是文件 | true | |
skip-headers | 避免在日志消息中使用頭前綴 | ||
stderrthreshold | 等于或高于此閾值的日志發(fā)布到stderr | 2 | |
v | 日志的日志級(jí)別 | ||
version版本 | 打印版本信息并退出 | true | |
vmodule | 模式列表=N文件篩選日志記錄 |
參數(shù)分類解釋
審計(jì)參數(shù):
詳見(jiàn): https://kubernetes.io/docs/tasks/debug-application-cluster/audit/
- 審計(jì)提供了一組與安全相關(guān)的按時(shí)間順序排列的記錄,記錄了各個(gè)用戶,管理員或系統(tǒng)其他組件影響系統(tǒng)的活動(dòng)順序。
- 每個(gè)請(qǐng)求在每個(gè)階段都會(huì)生成一個(gè)事件,然后根據(jù)某個(gè)策略對(duì)其進(jìn)行預(yù)處理并寫入后端。策略確定記錄的內(nèi)容,后端保留記錄。
- 審計(jì)后端將審計(jì)事件持久保存到外部存儲(chǔ)。
- Kube-apiserver提供三個(gè)后端:記錄后端,將事件寫入磁盤;Webhook后端,它將事件發(fā)送到外部API;動(dòng)態(tài)后端,通過(guò)AuditSink API對(duì)象配置webhook后端。
- 每個(gè)請(qǐng)求都可以用相關(guān)的“階段”記錄。
1、RequestReceived :審計(jì)處理程序收到請(qǐng)求后立即生成的事件的階段,以及在處理程序鏈下委托之前生成事件的階段。
2、ResponseStarted:一旦發(fā)送響應(yīng)頭,但在發(fā)送響應(yīng)主體之前。此階段僅針對(duì)長(zhǎng)時(shí)間運(yùn)行的請(qǐng)求(例如監(jiān)視)生成。
3、ResponseComplete: 響應(yīng)正文已完成,不再發(fā)送字節(jié)。
4、Panic:發(fā)生異常時(shí)產(chǎn)生的事件。
審核日志記錄功能會(huì)增加API服務(wù)器的內(nèi)存消耗,因?yàn)闉槊總€(gè)請(qǐng)求存儲(chǔ)了審核所需的某些上下文。此外,內(nèi)存消耗取決于審計(jì)日志記錄配置。
認(rèn)證參數(shù):
詳見(jiàn) https://kubernetes.io/docs/reference/access-authn-authz/authentication/
- 建立TLS后,HTTP請(qǐng)求將移至“身份驗(yàn)證”步驟。認(rèn)證器的輸入是整個(gè)HTTP請(qǐng)求,認(rèn)證步驟通常只檢查 headers 或客戶端證書。
- 身份驗(yàn)證模塊包括客戶端證書,密碼和普通token,bootstrap token和 JWT token(用于 service accounts)。
- 當(dāng)啟用了多個(gè)認(rèn)證模塊時(shí),一個(gè)認(rèn)證模塊成功認(rèn)證后將短路請(qǐng)求,不會(huì)進(jìn)行剩余模塊的認(rèn)證。API server 不能保證認(rèn)證的順序。
- 如果請(qǐng)求無(wú)法通過(guò)身份驗(yàn)證,則會(huì)被HTTP狀態(tài)碼 401 拒絕。
- 如果請(qǐng)求通過(guò)身份驗(yàn)證,插件會(huì)嘗試將以下屬性關(guān)聯(lián)到請(qǐng)求上:
1、用戶名:標(biāo)識(shí)最終用戶的字符串。常用值可能是 kube-admin 或 jane@example.com。
2、UID:標(biāo)識(shí)最終用戶的字符串,比用戶名更加一致且唯一。
3、組:一組將用戶和常規(guī)用戶組相關(guān)聯(lián)的字符串。system:authenticated 組包含在所有已驗(yàn)證用戶的組列表中。
4、額外字段:包含其他有用認(rèn)證信息的字符串列表的映射。 - Kubernetes usernames 用于訪問(wèn)控制決策和日志記錄,但它不是 user 對(duì)象,也不會(huì)在其對(duì)象庫(kù)中存儲(chǔ)用戶名或有關(guān)用戶的其他信息。
認(rèn)證器分類:
(1)509 客戶端證書:
啟用方法:--client-ca-file=SOMEFILE
驗(yàn)證方法:引用的文件必須包含一個(gè)或多個(gè)證書頒發(fā)機(jī)構(gòu),用于驗(yàn)證提交給 API server 的客戶端證書。
驗(yàn)證后:使用 subject 的 Common Name(CN)作為請(qǐng)求的用戶名。客戶端證書還可以使用證書的 organization 字段來(lái)指示用戶的組成員身份。
(2)靜態(tài) Token 文件:
啟用方法:--token-auth-file=SOMEFILE 。(token 文件是一個(gè) csv 文件,每行至少包含三列:token、用戶名、用戶 uid,其次是可選的組名。token 會(huì)無(wú)限期地持續(xù)下去,并且不重新啟動(dòng) API server 的話就無(wú)法更改token列表。)
驗(yàn)證方法:
API server 從文件讀取 bearer token,期望請(qǐng)求的 Authorization header 中包含 Bearer token 的值。
(3)Bootstrap Token Authenticator:
啟用方法: --enable-bootstrap-token-auth;Controller Manager 的 --controllers 參數(shù)啟用 TokenCleaner 。
驗(yàn)證方法:Kubernetes 中包含了一個(gè)名為 Bootstrap Token 的動(dòng)態(tài)管理的 bearer token。這些 token 使用 Secret 存儲(chǔ)在 kube-system namespace 中,在那里它們可以被動(dòng)態(tài)管理和創(chuàng)建。Controller Manager 中包含了 TokenCleaner 控制器,用于在 bootstrap token 過(guò)期時(shí)將其刪除。這些 token 的形式是 [a-z0-9]{6}.[a-z0-9]{16}。第一部分是 Token ID,第二部分是 Token Secret。
驗(yàn)證后:請(qǐng)求將被認(rèn)證為 system:bootstrap:<Token ID>
。被包含在 system:bootstrappers
組中。
詳細(xì)可參考
https://kubernetes.io/docs/reference/access-authn-authz/bootstrap-tokens/
(4)靜態(tài)密碼文件
啟用方法:--basic-auth-file=SOMEFILE。基本身份驗(yàn)證憑證將無(wú)限期地保留,不重啟API服務(wù)器無(wú)法更改密碼。目前僅支持基本身份驗(yàn)證。基本身份認(rèn)證是一個(gè) csv 文件,至少包含3列:密碼、用戶名、用戶 ID、組名(可選)。
驗(yàn)證方法:需要Authorization header 中包含 Basic BASE64ENCODED(USER:PASSWORD) 的值。
(5)Service Account Token
Service account 是一個(gè)自動(dòng)啟用的驗(yàn)證器,它使用簽名的 bearer token 來(lái)驗(yàn)證請(qǐng)求。該插件包括兩個(gè)可選參數(shù):
- --service-account-key-file 一個(gè)包含簽名 bearer token 的 PEM 編碼文件。如果未指定,將使用 API server 的 TLS 私鑰。
- service-account-lookup 如果啟用,從 API 中刪除掉的 token 將被撤銷。
Service account 通常由 API server 自動(dòng)創(chuàng)建,并通過(guò) ServiceAccount 注入控制器,關(guān)聯(lián)到集群中運(yùn)行的 Pod 上。Bearer token 掛載到 pod 中,并允許集群進(jìn)程與 API server 通信。 帳戶可以使用 PodSpec 的 serviceAccountName 字段顯式地與Pod關(guān)聯(lián)。
# 使用 kubectl create serviceaccount (NAME) 命令。這將在當(dāng)前的 namespace 和相關(guān)連的 secret 中創(chuàng)建一個(gè) service account。
$ kubectl create serviceaccount jenkins
# 創(chuàng)建出的 secret 中擁有 API server 的公共 CA 和前面的 JSON Web Token(JWT),secret 基于 base64 編碼。
$ kubectl get secret jenkins-token-1yvwg -o yaml
apiVersion: v1
data:
ca.crt: (APISERVER'S CA BASE64 ENCODED)
namespace: ZGVmYXVsdA==
token: (BEARER TOKEN BASE64 ENCODED)
kind: Secret
metadata:
# ...
type: kubernetes.io/service-account-token
經(jīng)過(guò)簽名的 JWT 可以用作 bearer token 與給定的 service account 進(jìn)行身份驗(yàn)證,在請(qǐng)求中放置 bearer token。
驗(yàn)證后:用戶名 system:serviceaccount:(NAMESPACE):(SERVICEACCOUNT),組 system:serviceaccounts 和 system:serviceaccounts:(NAMESPACE)。
(6)OpenID Connect Token
OpenID Connect 是由 OAuth2 供應(yīng)商提供的 OAuth2,特別是 Azure Active Directory、Salesforce 和 Google。
https://jimmysong.io/kubernetes-handbook/guide/authentication.html#openid-connect-token
(7)Webhook Token 認(rèn)證
Webhook 認(rèn)證是用來(lái)認(rèn)證 bearer token 的 hook。
https://jimmysong.io/kubernetes-handbook/guide/authentication.html#webhook-token-%E8%AE%A4%E8%AF%81
(8)認(rèn)證代理
可以配置 API server 從請(qǐng)求 header 的值中識(shí)別用戶,例如 X-Remote-User。這樣的設(shè)計(jì)是用來(lái)與請(qǐng)求 header 值的驗(yàn)證代理結(jié)合使用。
https://jimmysong.io/kubernetes-handbook/guide/authentication.html#%E8%AE%A4%E8%AF%81%E4%BB%A3%E7%90%86
(9)匿名請(qǐng)求
未被其他已配置身份驗(yàn)證方法拒絕的請(qǐng)求將被視為匿名請(qǐng)求,用戶名:system:anonymous
、組名:system:unuthenticated
ABAC 和 RBAC 授權(quán)人需要明確授權(quán) system:annoymous 或 system:unauthenticated 組,因此授予對(duì) * 用戶或 * 組訪問(wèn)權(quán)的傳統(tǒng)策略規(guī)則不包括匿名用戶。
授權(quán)參數(shù):
RBAC模式: https://kubernetes.io/docs/reference/access-authn-authz/rbac/
ABAC模式: https://kubernetes.io/docs/reference/access-authn-authz/abac/
Node模式: https://kubernetes.io/docs/reference/access-authn-authz/node/
Node模式:
- 為了獲得Node授權(quán)者的授權(quán),kubelet必須使用憑證說(shuō)明它在system:nodes組中,用戶名為system:node:<nodeName>,該格式應(yīng)該與為 kubelet 作為 kubelet TLS 引導(dǎo)的創(chuàng)建的標(biāo)識(shí)相匹配。
- Node 授權(quán)者可以允許 kubelet 執(zhí)行 以下 API 操作:
1、讀操作:服務(wù)、端點(diǎn)、節(jié)點(diǎn)、Pod、Secret、ConfigMap、persistent volume claims、綁定到kubelet節(jié)點(diǎn)的pod相關(guān)的持久卷
2、寫操作:節(jié)點(diǎn)和節(jié)點(diǎn)狀態(tài)、pod和pod狀態(tài)、事件
3、與認(rèn)證相關(guān)的操作:對(duì)TLS引導(dǎo)的certificationsigningrequests API的讀/寫訪問(wèn)權(quán)限、能夠?yàn)槲傻纳矸蒡?yàn)證/授權(quán)檢查創(chuàng)建tokenreviews和subjectaccessreviews
API啟用參數(shù):
https://kubernetes.io/docs/reference/using-api/api-overview/
準(zhǔn)入?yún)?shù):
https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/
準(zhǔn)入控制器在請(qǐng)求經(jīng)過(guò)身份驗(yàn)證和授權(quán)之后、對(duì)象持久化之前,攔截對(duì)Kubernetes API服務(wù)器的請(qǐng)求。控制器被編譯為 kube-apiserver二進(jìn)制文件,只能由集群管理員配置。
準(zhǔn)入控制器可以是“validating”,“mutating”或兩者。變異控制器可以修改他們 admit 的對(duì)象; 驗(yàn)證控制器不會(huì)。
準(zhǔn)入控制過(guò)程分兩個(gè)階段進(jìn)行。在第一階段,運(yùn)行 mutating admission controllers。在第二階段,運(yùn)行 validating admission controllers。有些控制器會(huì)運(yùn)行兩次。如果任一階段中的任何控制器拒絕請(qǐng)求,則立即拒絕整個(gè)請(qǐng)求,并向最終用戶返回錯(cuò)誤。
準(zhǔn)入控制器有時(shí)可能具有副作用,即,作為請(qǐng)求處理的一部分來(lái)改變相關(guān)資源。比如增加配額使用量。任何副作用都需要相應(yīng)的回收或協(xié)調(diào)過(guò)程。
NodeRestriction:
- 限制 kubelet 修改 node 和 pod 對(duì)象的權(quán)限。 為了啟用該功能,kubelet 要使用
system: nodes
組中的證書。用戶名如下system:node:<nodeName>
。這種 kubelet只允許修改自己節(jié)點(diǎn)的 API 對(duì)象 和 綁定在該節(jié)點(diǎn)上的 POD API 對(duì)象。 - 對(duì)于 Kubernetes 1.11+, kubelet 不能修改其NodeAPI對(duì)象中的污點(diǎn)。
- 對(duì)于 Kubernetes 1.13+, kubelet 不能刪除其NodeAPI對(duì)象,并強(qiáng)制對(duì)其前綴kubernetes.io/或k8s.io/前綴下的標(biāo)簽進(jìn)行修改。
- 未來(lái)版本可能會(huì)添加其他限制,以確保kubelet具有正確操作所需的最小權(quán)限集。