kube-proxy

概要

Kubernetes 網路代理在每個節點上執行。這反映 Kubernetes API 中定義的服務在每個節點上,並且可以執行簡單的 TCP、UDP 和 SCTP 串流轉送或跨一組後端的循環配置資源 TCP、UDP 和 SCTP 轉送。服務叢集 IP 和連接埠目前透過 Docker-links 相容的環境變數找到,這些變數指定服務代理開啟的連接埠。有一個選用的外掛程式為這些叢集 IP 提供叢集 DNS。使用者必須使用 apiserver API 建立服務以設定代理。

kube-proxy [flags]

選項

--add_dir_header

如果為 true,則將檔案目錄新增至日誌訊息的標頭

--alsologtostderr

同時記錄到標準錯誤和檔案 (當 -logtostderr=true 時無效)

--bind-address string     預設值:0.0.0.0

覆寫 kube-proxy 對其節點主要 IP 的想法。請注意,此名稱是歷史產物,而 kube-proxy 實際上並未將任何 socket 繫結至此 IP。如果 --config 指定了組態檔,則會忽略此參數。

--bind-address-hard-fail

如果為 true,kube-proxy 會將無法繫結至連接埠視為嚴重錯誤並結束

--cleanup

如果為 true,則清理 iptables 和 ipvs 規則並結束。

--cluster-cidr string

叢集中 Pod 的 CIDR 範圍。(對於雙堆疊叢集,這可以是逗號分隔的雙堆疊 CIDR 範圍對)。當 --detect-local-mode 設定為 ClusterCIDR 時,如果 kube-proxy 的來源 IP 在此範圍內,則會將流量視為本機流量。(否則不會使用)。如果 --config 指定了組態檔,則會忽略此參數。

--config string

組態檔的路徑。

--config-sync-period duration     預設值:15m0s

從 apiserver 重新整理組態的頻率。必須大於 0。

--conntrack-max-per-core int32     預設值:32768

每個 CPU 核心要追蹤的最大 NAT 連線數 (0 表示將限制保持原樣並忽略 conntrack-min)。

--conntrack-min int32     預設值:131072

要配置的最小 conntrack 條目數,無論 conntrack-max-per-core 為何 (設定 conntrack-max-per-core=0 以將限制保持原樣)。

--conntrack-tcp-be-liberal

透過將 nf_conntrack_tcp_be_liberal 設定為 1,啟用寬鬆模式以追蹤 TCP 封包

--conntrack-tcp-timeout-close-wait duration     預設值:1h0m0s

CLOSE_WAIT 狀態中 TCP 連線的 NAT 超時

--conntrack-tcp-timeout-established duration     預設值:24h0m0s

已建立 TCP 連線的閒置超時 (0 表示保持原樣)

--conntrack-udp-timeout duration

未回覆 UDP 連線的閒置超時 (0 表示保持原樣)

--conntrack-udp-timeout-stream duration

已確保 UDP 連線的閒置超時 (0 表示保持原樣)

--detect-local-mode LocalMode

用於偵測本機流量的模式。如果 --config 指定了組態檔,則會忽略此參數。

--feature-gates <逗號分隔的 'key=True|False' 配對>

一組 key=value 配對,描述 alpha/實驗性功能的功能閘道。選項為
APIResponseCompression=true|false (BETA - 預設值=true)
APIServerIdentity=true|false (BETA - 預設值=true)
APIServerTracing=true|false (BETA - 預設值=true)
APIServingWithRoutine=true|false (ALPHA - 預設值=false)
AllAlpha=true|false (ALPHA - 預設值=false)
AllBeta=true|false (BETA - 預設值=false)
AllowUnsafeMalformedObjectDeletion=true|false (ALPHA - 預設值=false)
AnonymousAuthConfigurableEndpoints=true|false (BETA - 預設值=true)
AnyVolumeDataSource=true|false (BETA - 預設值=true)
AuthorizeNodeWithSelectors=true|false (BETA - 預設值=true)
AuthorizeWithSelectors=true|false (BETA - 預設值=true)
BtreeWatchCache=true|false (BETA - 預設值=true)
CBORServingAndStorage=true|false (ALPHA - 預設值=false)
CPUManagerPolicyAlphaOptions=true|false (ALPHA - 預設值=false)
CPUManagerPolicyBetaOptions=true|false (BETA - 預設值=true)
CPUManagerPolicyOptions=true|false (BETA - 預設值=true)
CRDValidationRatcheting=true|false (BETA - 預設值=true)
CSIMigrationPortworx=true|false (BETA - 預設值=true)
CSIVolumeHealth=true|false (ALPHA - 預設值=false)
ClientsAllowCBOR=true|false (ALPHA - 預設值=false)
ClientsPreferCBOR=true|false (ALPHA - 預設值=false)
CloudControllerManagerWebhook=true|false (ALPHA - 預設值=false)
ClusterTrustBundle=true|false (ALPHA - 預設值=false)
ClusterTrustBundleProjection=true|false (ALPHA - 預設值=false)
ComponentFlagz=true|false (ALPHA - 預設值=false)
ComponentStatusz=true|false (ALPHA - 預設值=false)
ConcurrentWatchObjectDecode=true|false (BETA - 預設值=false)
ConsistentListFromCache=true|false (BETA - 預設值=true)
ContainerCheckpoint=true|false (BETA - 預設值=true)
ContextualLogging=true|false (BETA - 預設值=true)
CoordinatedLeaderElection=true|false (ALPHA - 預設值=false)
CrossNamespaceVolumeDataSource=true|false (ALPHA - 預設值=false)
CustomCPUCFSQuotaPeriod=true|false (ALPHA - 預設值=false)
DRAAdminAccess=true|false (ALPHA - 預設值=false)
DRAResourceClaimDeviceStatus=true|false (ALPHA - 預設值=false)
DisableAllocatorDualWrite=true|false (ALPHA - 預設值=false)
DynamicResourceAllocation=true|false (BETA - 預設值=false)
EventedPLEG=true|false (ALPHA - 預設值=false)
ExternalServiceAccountTokenSigner=true|false (ALPHA - 預設值=false)
GracefulNodeShutdown=true|false (BETA - 預設值=true)
GracefulNodeShutdownBasedOnPodPriority=true|false (BETA - 預設值=true)
HPAScaleToZero=true|false (ALPHA - 預設值=false)
HonorPVReclaimPolicy=true|false (BETA - 預設值=true)
ImageMaximumGCAge=true|false (BETA - 預設值=true)
ImageVolume=true|false (ALPHA - 預設值=false)
InPlacePodVerticalScaling=true|false (ALPHA - 預設值=false)
InPlacePodVerticalScalingAllocatedStatus=true|false (ALPHA - 預設值=false)
InPlacePodVerticalScalingExclusiveCPUs=true|false (ALPHA - 預設值=false)
InTreePluginPortworxUnregister=true|false (ALPHA - 預設值=false)
InformerResourceVersion=true|false (ALPHA - 預設值=false)
JobBackoffLimitPerIndex=true|false (BETA - 預設值=true)
JobManagedBy=true|false (BETA - 預設值=true)
JobPodReplacementPolicy=true|false (BETA - 預設值=true)
JobSuccessPolicy=true|false (BETA - 預設值=true)
KubeletCgroupDriverFromCRI=true|false (BETA - 預設值=true)
KubeletCrashLoopBackOffMax=true|false (ALPHA - 預設值=false)
KubeletFineGrainedAuthz=true|false (ALPHA - 預設值=false)
KubeletInUserNamespace=true|false (ALPHA - 預設值=false)
KubeletPodResourcesDynamicResources=true|false (ALPHA - 預設值=false)
KubeletPodResourcesGet=true|false (ALPHA - 預設值=false)
KubeletSeparateDiskGC=true|false (BETA - 預設值=true)
KubeletTracing=true|false (BETA - 預設值=true)
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (BETA - 預設值=false)
LoggingAlphaOptions=true|false (ALPHA - 預設值=false)
LoggingBetaOptions=true|false (BETA - 預設值=true)
MatchLabelKeysInPodAffinity=true|false (BETA - 預設值=true)
MatchLabelKeysInPodTopologySpread=true|false (BETA - 預設值=true)
MaxUnavailableStatefulSet=true|false (ALPHA - 預設值=false)
MemoryQoS=true|false (ALPHA - 預設值=false)
MultiCIDRServiceAllocator=true|false (BETA - 預設值=false)
MutatingAdmissionPolicy=true|false (ALPHA - 預設值=false)
NFTablesProxyMode=true|false (BETA - 預設值=true)
NodeInclusionPolicyInPodTopologySpread=true|false (BETA - 預設值=true)
NodeLogQuery=true|false (BETA - 預設值=false)
NodeSwap=true|false (BETA - 預設值=true)
OpenAPIEnums=true|false (BETA - 預設值=true)
PodAndContainerStatsFromCRI=true|false (ALPHA - 預設值=false)
PodDeletionCost=true|false (BETA - 預設值=true)
PodLevelResources=true|false (ALPHA - 預設值=false)
PodLifecycleSleepAction=true|false (BETA - 預設值=true)
PodLifecycleSleepActionAllowZero=true|false (ALPHA - 預設值=false)
PodLogsQuerySplitStreams=true|false (ALPHA - 預設值=false)
PodReadyToStartContainersCondition=true|false (BETA - 預設值=true)
PortForwardWebsockets=true|false (BETA - 預設值=true)
ProcMountType=true|false (BETA - 預設值=false)
QOSReserved=true|false (ALPHA - 預設值=false)
RecoverVolumeExpansionFailure=true|false (BETA - 預設值=true)
RecursiveReadOnlyMounts=true|false (BETA - 預設值=true)
RelaxedDNSSearchValidation=true|false (ALPHA - 預設值=false)
RelaxedEnvironmentVariableValidation=true|false (BETA - 預設值=true)
ReloadKubeletServerCertificateFile=true|false (BETA - 預設值=true)
RemoteRequestHeaderUID=true|false (ALPHA - 預設值=false)
ResilientWatchCacheInitialization=true|false (BETA - 預設值=true)
ResourceHealthStatus=true|false (ALPHA - 預設值=false)
RotateKubeletServerCertificate=true|false (BETA - 預設值=true)
RuntimeClassInImageCriApi=true|false (ALPHA - 預設值=false)
SELinuxChangePolicy=true|false (ALPHA - 預設值=false)
SELinuxMount=true|false (ALPHA - 預設值=false)
SELinuxMountReadWriteOncePod=true|false (BETA - 預設值=true)
SchedulerAsyncPreemption=true|false (ALPHA - 預設值=false)
SchedulerQueueingHints=true|false (BETA - 預設值=true)
SeparateCacheWatchRPC=true|false (BETA - 預設值=true)
SeparateTaintEvictionController=true|false (BETA - 預設值=true)
ServiceAccountNodeAudienceRestriction=true|false (BETA - 預設值=true)
ServiceAccountTokenNodeBinding=true|false (BETA - 預設值=true)
ServiceTrafficDistribution=true|false (BETA - 預設值=true)
SidecarContainers=true|false (BETA - 預設值=true)
StorageNamespaceIndex=true|false (BETA - 預設值=true)
StorageVersionAPI=true|false (ALPHA - 預設值=false)
StorageVersionHash=true|false (BETA - 預設值=true)
StorageVersionMigrator=true|false (ALPHA - 預設值=false)
StructuredAuthenticationConfiguration=true|false (BETA - 預設值=true)
SupplementalGroupsPolicy=true|false (ALPHA - 預設值=false)
SystemdWatchdog=true|false (BETA - 預設值=true)
TopologyAwareHints=true|false (BETA - 預設值=true)
TopologyManagerPolicyAlphaOptions=true|false (ALPHA - 預設值=false)
TopologyManagerPolicyBetaOptions=true|false (BETA - 預設值=true)
TranslateStreamCloseWebsocketRequests=true|false (BETA - 預設值=true)
UnauthenticatedHTTP2DOSMitigation=true|false (BETA - 預設值=true)
UnknownVersionInteroperabilityProxy=true|false (ALPHA - 預設值=false)
UserNamespacesPodSecurityStandards=true|false (ALPHA - 預設值=false)
UserNamespacesSupport=true|false (BETA - 預設值=false)
VolumeAttributesClass=true|false (BETA - 預設值=false)
VolumeCapacityPriority=true|false (ALPHA - 預設值=false)
WatchCacheInitializationPostStartHook=true|false (BETA - 預設值=false)
WatchFromStorageWithoutResourceVersion=true|false (BETA - 預設值=false)
WatchList=true|false (BETA - 預設值=true)
WatchListClient=true|false (BETA - 預設值=false)
WinDSR=true|false (ALPHA - 預設值=false)
WinOverlay=true|false (BETA - 預設值=true)
WindowsCPUAndMemoryAffinity=true|false (ALPHA - 預設值=false)
WindowsGracefulNodeShutdown=true|false (ALPHA - 預設值=false)
WindowsHostNetwork=true|false (ALPHA - 預設值=true)
如果組態檔是由 --config 指定,則會忽略此參數。

--healthz-bind-address ipport     預設值:0.0.0.0:10256

用於提供健康檢查伺服器的 IP 位址和埠號,預設為 "0.0.0.0:10256"。如果組態檔是由 --config 指定,則會忽略此參數。

-h, --help

kube-proxy 的說明

--hostname-override string

如果為非空值,將用作 kube-proxy 執行所在節點的名稱。如果未設定,節點名稱會假設與節點的主機名稱相同。

--init-only

如果為 true,執行任何必須以完整 root 權限完成的初始化步驟,然後退出。完成此操作後,您可以再次執行 kube-proxy,僅需 CAP_NET_ADMIN 功能即可。

--iptables-localhost-nodeports     預設值:true

如果為 false,kube-proxy 將停用允許透過 localhost 存取 NodePort 服務的舊有行為。(僅適用於 iptables 模式和 IPv4;localhost NodePort 永遠不允許用於其他代理模式或 IPv6。)

--iptables-masquerade-bit int32     預設值:14

如果使用 iptables 或 ipvs 代理模式,則為 fwmark 空間的位元,用於標記需要 SNAT 的封包。必須在 [0, 31] 範圍內。

--iptables-min-sync-period duration     預設值:1 秒

iptables 規則重新同步之間的最小週期(例如 '5s'、'1m'、'2h22m')。值為 0 表示每次 Service 或 EndpointSlice 變更都會導致立即 iptables 重新同步。

--iptables-sync-period duration     預設值:30 秒

一個間隔(例如 '5s'、'1m'、'2h22m'),指示執行各種重新同步和清理操作的頻率。必須大於 0。

--ipvs-exclude-cidrs strings

逗號分隔的 CIDR 清單,ipvs 代理在清理 IPVS 規則時不應觸及這些 CIDR。

--ipvs-min-sync-period duration     預設值:1 秒

IPVS 規則重新同步之間的最小週期(例如 '5s'、'1m'、'2h22m')。值為 0 表示每次 Service 或 EndpointSlice 變更都會導致立即 IPVS 重新同步。

--ipvs-scheduler string

當代理模式為 ipvs 時的 ipvs 排程器類型

--ipvs-strict-arp

透過將 arp_ignore 設定為 1 並將 arp_announce 設定為 2 來啟用嚴格 ARP

--ipvs-sync-period duration     預設值:30 秒

一個間隔(例如 '5s'、'1m'、'2h22m'),指示執行各種重新同步和清理操作的頻率。必須大於 0。

--ipvs-tcp-timeout duration

閒置 IPVS TCP 連線的逾時時間,0 表示保持原樣。(例如 '5s'、'1m'、'2h22m')。

--ipvs-tcpfin-timeout duration

在收到 FIN 封包後,IPVS TCP 連線的逾時時間,0 表示保持原樣。(例如 '5s'、'1m'、'2h22m')。

--ipvs-udp-timeout duration

IPVS UDP 封包的逾時時間,0 表示保持原樣。(例如 '5s'、'1m'、'2h22m')。

--kube-api-burst int32     預設值:10

與 kubernetes apiserver 通訊時使用的 Burst 值

--kube-api-content-type string     預設值:"application/vnd.kubernetes.protobuf"

傳送至 apiserver 的請求內容類型。

--kube-api-qps float     預設值:5

與 kubernetes apiserver 通訊時使用的 QPS 值

--kubeconfig string

包含授權資訊的 kubeconfig 檔案路徑(master 位置可以由 master 旗標覆寫)。

--log-flush-frequency duration     預設值:5 秒

日誌刷新之間的最大秒數

--log-text-info-buffer-size quantity

[Alpha] 在使用分割輸出串流的文字格式中,資訊訊息可以緩衝一段時間以提高效能。預設值零位元組會停用緩衝。大小可以指定為位元組數 (512)、1000 的倍數 (1K)、1024 的倍數 (2Ki) 或這些的次方 (3M、4G、5Mi、6Gi)。啟用 LoggingAlphaOptions 功能閘道以使用此功能。

--log-text-split-stream

[Alpha] 在文字格式中,將錯誤訊息寫入 stderr,資訊訊息寫入 stdout。預設是將單一串流寫入 stdout。啟用 LoggingAlphaOptions 功能閘道以使用此功能。

--log_backtrace_at <格式為 'file:N' 的字串>     預設值::0

當日誌記錄命中行 file:N 時,發出堆疊追蹤

--log_dir string

如果為非空值,請在此目錄中寫入日誌檔案(當 -logtostderr=true 時無效)

--log_file string

如果為非空值,請使用此日誌檔案(當 -logtostderr=true 時無效)

--log_file_max_size uint     預設值:1800

定義日誌檔案可以成長的最大大小(當 -logtostderr=true 時無效)。單位為 MB。如果值為 0,則最大檔案大小為無限制。

--logging-format string     預設值:"text"

設定日誌格式。允許的格式:"text"。

--logtostderr     預設值:true

將日誌記錄到標準錯誤而不是檔案

--masquerade-all

SNAT 所有透過 Service 叢集 IP 傳送的流量。某些 CNI 外掛程式可能需要此設定。僅在 Linux 上支援。

--master string

Kubernetes API 伺服器的位址(覆寫 kubeconfig 中的任何值)

--metrics-bind-address ipport     預設值:127.0.0.1:10249

用於提供指標伺服器的 IP 位址和埠號,預設為 "127.0.0.1:10249"。(設定為 "0.0.0.0:10249" / "[::]:10249" 以繫結到所有介面。)設定為空值以停用。如果組態檔是由 --config 指定,則會忽略此參數。

--nodeport-addresses strings

包含有效節點 IP 的 CIDR 範圍清單,或單一字串 'primary'。如果設定為 CIDR 清單,則只會在其中一個指示範圍內的節點 IP 上接受到 NodePort 服務的連線。如果設定為 'primary',則只會在節點物件的主要 IP 上接受 NodePort 服務。如果未設定,則會在所有本機 IP 上接受 NodePort 連線。如果組態檔是由 --config 指定,則會忽略此參數。

--one_output

如果為 true,則僅將日誌寫入其原生嚴重性層級(而不是也寫入每個較低的嚴重性層級;當 -logtostderr=true 時無效)

--oom-score-adj int32     預設值:-999

kube-proxy 程序的 oom-score-adj 值。值必須在 [-1000, 1000] 範圍內。如果組態檔是由 --config 指定,則會忽略此參數。

--pod-bridge-interface string

橋接介面名稱。當 --detect-local-mode 設定為 BridgeInterface 時,如果流量來自此橋接器,kube-proxy 會將流量視為本機流量。

--pod-interface-name-prefix string

介面名稱前綴。當 --detect-local-mode 設定為 InterfaceNamePrefix 時,如果流量來自名稱以此前綴開頭的任何介面,kube-proxy 會將流量視為本機流量。

--profiling

如果為 true,則透過 /debug/pprof 處理程式在網頁介面上啟用效能分析。如果組態檔是由 --config 指定,則會忽略此參數。

--proxy-mode ProxyMode

要使用的代理模式:在 Linux 上,這可以是 'iptables'(預設)或 'ipvs'。在 Windows 上,唯一支援的值是 'kernelspace'。如果組態檔是由 --config 指定,則會忽略此參數。

--show-hidden-metrics-for-version string

您要顯示隱藏指標的先前版本。只有先前的次要版本才有意義,其他值將不被允許。格式為 <major>.<minor>,例如:'1.16'。此格式的目的是確保您有機會注意到下一個版本是否隱藏了其他指標,而不是在之後的版本中永久移除它們時感到驚訝。如果組態檔是由 --config 指定,則會忽略此參數。

--skip_headers

如果為 true,則避免在日誌訊息中使用標頭前綴

--skip_log_headers

如果為 true,則在開啟日誌檔案時避免使用標頭(當 -logtostderr=true 時無效)

--stderrthreshold int     預設值:2

當寫入檔案和 stderr 時,高於或等於此閾值的日誌會轉到 stderr(當 -logtostderr=true 或 -alsologtostderr=true 時無效)

-v, --v int

日誌層級詳細程度的數字

--version version[=true]

--version、--version=raw 印出版本資訊並退出;--version=vX.Y.Z... 設定報告的版本

--vmodule pattern=N,...

以逗號分隔的 pattern=N 設定清單,用於檔案篩選的日誌記錄(僅適用於文字日誌格式)

--write-config-to string

如果設定,將預設組態值寫入此檔案並退出。

此頁面為自動產生。

如果您計劃回報此頁面的問題,請在您的問題描述中提及此頁面為自動產生。修復可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2024 年 12 月 12 日下午 2:31 PST:為 v1.32 重新產生元件參考 (f88d4ccd1d)