kube-proxy

概要

Kubernetes 网络代理运行在每个节点上。它将 Kubernetes API 中定义的服务映射到每个节点上,并可以执行简单的 TCP、UDP 和 SCTP 流转发,或在后端集合之间执行轮询式 TCP、UDP 和 SCTP 转发。当前,服务集群 IP 和端口通过指定服务代理开放端口的 Docker-links 兼容环境变量来获取。存在一个可选插件,可为这些集群 IP 提供集群 DNS。用户必须使用 apiserver API 创建一个 Service 来配置代理。

kube-proxy [flags]

选项

--add_dir_header

如果为 true,则将文件目录添加到日志消息的头部

--alsologtostderr

同时将日志写入标准错误和文件(当 -logtostderr=true 时无效)

--bind-address string     默认值: 0.0.0.0

覆盖 kube-proxy 对其节点主要 IP 的理解。请注意,此名称是历史遗留名称,kube-proxy 实际上不会将任何套接字绑定到此 IP。如果通过 --config 指定了配置文件,则忽略此参数。

--bind-address-hard-fail

如果为 true,kube-proxy 将把绑定端口失败视为致命错误并退出

--cleanup

如果为 true,则清理 iptables 和 ipvs 规则并退出。

--cluster-cidr string

集群中 Pod 的 CIDR 范围。(对于双栈集群,这可以是一对逗号分隔的双栈 CIDR 范围)。当 --detect-local-mode 设置为 ClusterCIDR 时,如果流量的源 IP 在此范围内,kube-proxy 会将其视为本地流量。(否则不会使用此参数)。如果通过 --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' 对>

一组键值对,用于描述 Alpha/实验性功能的 Feature Gates。选项包括:
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)
AllowParsingUserUIDFromCertAuth=true|false (BETA - 默认值=true)
AllowUnsafeMalformedObjectDeletion=true|false (ALPHA - 默认值=false)
AnonymousAuthConfigurableEndpoints=true|false (BETA - 默认值=true)
AuthorizeNodeWithSelectors=true|false (BETA - 默认值=true)
AuthorizeWithSelectors=true|false (BETA - 默认值=true)
CBORServingAndStorage=true|false (ALPHA - 默认值=false)
CPUManagerPolicyAlphaOptions=true|false (ALPHA - 默认值=false)
CPUManagerPolicyBetaOptions=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 (BETA - 默认值=false)
ClusterTrustBundleProjection=true|false (BETA - 默认值=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)
ContainerStopSignals=true|false (ALPHA - 默认值=false)
ContextualLogging=true|false (BETA - 默认值=true)
CoordinatedLeaderElection=true|false (BETA - 默认值=false)
CrossNamespaceVolumeDataSource=true|false (ALPHA - 默认值=false)
CustomCPUCFSQuotaPeriod=true|false (ALPHA - 默认值=false)
DRAAdminAccess=true|false (ALPHA - 默认值=false)
DRADeviceTaints=true|false (ALPHA - 默认值=false)
DRAPartitionableDevices=true|false (ALPHA - 默认值=false)
DRAPrioritizedList=true|false (ALPHA - 默认值=false)
DRAResourceClaimDeviceStatus=true|false (BETA - 默认值=true)
DeclarativeValidation=true|false (BETA - 默认值=true)
DeclarativeValidationTakeover=true|false (BETA - 默认值=false)
DeploymentReplicaSetTerminatingReplicas=true|false (ALPHA - 默认值=false)
DisableAllocatorDualWrite=true|false (BETA - 默认值=false)
DisableCPUQuotaWithExclusiveCPUs=true|false (BETA - 默认值=true)
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)
HPAConfigurableTolerance=true|false (ALPHA - 默认值=false)
HPAScaleToZero=true|false (ALPHA - 默认值=false)
ImageMaximumGCAge=true|false (BETA - 默认值=true)
ImageVolume=true|false (BETA - 默认值=false)
InOrderInformers=true|false (BETA - 默认值=true)
InPlacePodVerticalScaling=true|false (BETA - 默认值=true)
InPlacePodVerticalScalingExclusiveCPUs=true|false (ALPHA - 默认值=false)
InTreePluginPortworxUnregister=true|false (ALPHA - 默认值=false)
InformerResourceVersion=true|false (ALPHA - 默认值=false)
JobManagedBy=true|false (BETA - 默认值=true)
JobPodReplacementPolicy=true|false (BETA - 默认值=true)
KubeletCgroupDriverFromCRI=true|false (BETA - 默认值=true)
KubeletCrashLoopBackOffMax=true|false (ALPHA - 默认值=false)
KubeletEnsureSecretPulledImages=true|false (ALPHA - 默认值=false)
KubeletFineGrainedAuthz=true|false (BETA - 默认值=true)
KubeletInUserNamespace=true|false (ALPHA - 默认值=false)
KubeletPSI=true|false (ALPHA - 默认值=false)
KubeletPodResourcesDynamicResources=true|false (ALPHA - 默认值=false)
KubeletPodResourcesGet=true|false (ALPHA - 默认值=false)
KubeletSeparateDiskGC=true|false (BETA - 默认值=true)
KubeletServiceAccountTokenForCredentialProviders=true|false (ALPHA - 默认值=false)
KubeletTracing=true|false (BETA - 默认值=true)
ListFromCacheSnapshot=true|false (ALPHA - 默认值=false)
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (BETA - 默认值=false)
LoggingAlphaOptions=true|false (ALPHA - 默认值=false)
LoggingBetaOptions=true|false (BETA - 默认值=true)
MatchLabelKeysInPodTopologySpread=true|false (BETA - 默认值=true)
MaxUnavailableStatefulSet=true|false (ALPHA - 默认值=false)
MemoryQoS=true|false (ALPHA - 默认值=false)
MutableCSINodeAllocatableCount=true|false (ALPHA - 默认值=false)
MutatingAdmissionPolicy=true|false (ALPHA - 默认值=false)
NodeLogQuery=true|false (BETA - 默认值=false)
NodeSwap=true|false (BETA - 默认值=true)
OpenAPIEnums=true|false (BETA - 默认值=true)
OrderedNamespaceDeletion=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 (BETA - 默认值=true)
PodLogsQuerySplitStreams=true|false (ALPHA - 默认值=false)
PodObservedGenerationTracking=true|false (ALPHA - 默认值=false)
PodReadyToStartContainersCondition=true|false (BETA - 默认值=true)
PodTopologyLabelsAdmission=true|false (ALPHA - 默认值=false)
PortForwardWebsockets=true|false (BETA - 默认值=true)
PreferSameTrafficDistribution=true|false (ALPHA - 默认值=false)
ProcMountType=true|false (BETA - 默认值=true)
QOSReserved=true|false (ALPHA - 默认值=false)
RecoverVolumeExpansionFailure=true|false (BETA - 默认值=true)
ReduceDefaultCrashLoopBackOffDecay=true|false (ALPHA - 默认值=false)
RelaxedDNSSearchValidation=true|false (BETA - 默认值=true)
RelaxedEnvironmentVariableValidation=true|false (BETA - 默认值=true)
ReloadKubeletServerCertificateFile=true|false (BETA - 默认值=true)
RemoteRequestHeaderUID=true|false (BETA - 默认值=true)
ResilientWatchCacheInitialization=true|false (BETA - 默认值=true)
ResourceHealthStatus=true|false (ALPHA - 默认值=false)
RotateKubeletServerCertificate=true|false (BETA - 默认值=true)
RuntimeClassInImageCriApi=true|false (ALPHA - 默认值=false)
SELinuxChangePolicy=true|false (BETA - 默认值=true)
SELinuxMount=true|false (BETA - 默认值=false)
SELinuxMountReadWriteOncePod=true|false (BETA - 默认值=true)
SchedulerAsyncPreemption=true|false (BETA - 默认值=true)
SchedulerPopFromBackoffQ=true|false (BETA - 默认值=true)
SchedulerQueueingHints=true|false (BETA - 默认值=true)
SeparateTaintEvictionController=true|false (BETA - 默认值=true)
ServiceAccountNodeAudienceRestriction=true|false (BETA - 默认值=true)
StorageCapacityScoring=true|false (ALPHA - 默认值=false)
StorageVersionAPI=true|false (ALPHA - 默认值=false)
StorageVersionHash=true|false (BETA - 默认值=true)
StorageVersionMigrator=true|false (ALPHA - 默认值=false)
StreamingCollectionEncodingToJSON=true|false (BETA - 默认值=true)
StreamingCollectionEncodingToProtobuf=true|false (BETA - 默认值=true)
StrictIPCIDRValidation=true|false (ALPHA - 默认值=false)
StructuredAuthenticationConfiguration=true|false (BETA - 默认值=true)
SupplementalGroupsPolicy=true|false (BETA - 默认值=true)
SystemdWatchdog=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 - 默认值=true)
VolumeAttributesClass=true|false (BETA - 默认值=false)
WatchCacheInitializationPostStartHook=true|false (BETA - 默认值=false)
WatchList=true|false (BETA - 默认值=false)
WatchListClient=true|false (BETA - 默认值=false)
WinDSR=true|false (BETA - 默认值=true)
WinOverlay=true|false (BETA - 默认值=true)
WindowsCPUAndMemoryAffinity=true|false (ALPHA - 默认值=false)
WindowsGracefulNodeShutdown=true|false (ALPHA - 默认值=false)
如果通过 --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 运行所在的 Node 的名称。如果未设置,则假定节点名称与节点的主机名相同。

--init-only

如果为 true,则执行必须以完整 root 权限完成的任何初始化步骤,然后退出。执行此操作后,你可以仅使用 CAP_NET_ADMIN 能力再次运行 kube-proxy。

--iptables-localhost-nodeports     默认值: true

如果为 false,则 kube-proxy 将禁用通过 localhost 访问 NodePort Service 的传统行为。(仅适用于 iptables 模式和 IPv4;在其他代理模式或 IPv6 下,永远不允许 localhost NodePort)。

--iptables-masquerade-bit int32     默认值: 14

如果使用 iptables 或 ipvs 代理模式,用于标记需要进行 SNAT 的数据包的 fwmark 空间的位。必须在 [0, 31] 的范围内。

--iptables-min-sync-period duration     默认值: 1s

iptables 规则重新同步之间的最短周期(例如 '5s'、'1m'、'2h22m')。值为 0 表示每个 Service 或 EndpointSlice 的更改都会导致立即重新同步 iptables。

--iptables-sync-period duration     默认值: 30s

指示各种重新同步和清理操作执行频率的时间间隔(例如 '5s'、'1m'、'2h22m')。必须大于 0。

--ipvs-exclude-cidrs strings

一个逗号分隔的 CIDR 列表,ipvs 代理清理 IPVS 规则时应避开这些 CIDR。

--ipvs-min-sync-period duration     默认值: 1s

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     默认值: 30s

指示各种重新同步和清理操作执行频率的时间间隔(例如 '5s'、'1m'、'2h22m')。必须大于 0。

--ipvs-tcp-timeout duration

IPVS 空闲 TCP 连接的超时时间,0 表示保持不变(例如 '5s'、'1m'、'2h22m')。

--ipvs-tcpfin-timeout duration

IPVS TCP 连接在收到 FIN 数据包后的超时时间,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 标志覆盖)。

--log-flush-frequency duration     默认值: 5s

日志刷盘之间的最大秒数

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

[Alpha] 在文本格式且输出流分开的情况下,信息消息可以缓冲一段时间以提高性能。默认值零字节禁用缓冲。大小可以指定为字节数 (512),1000 的倍数 (1K),1024 的倍数 (2Ki),或其幂次 (3M, 4G, 5Mi, 6Gi)。启用 LoggingAlphaOptions Feature Gate 来使用此功能。

--log-text-split-stream

[Alpha] 在文本格式下,将错误消息写入 stderr,将信息消息写入 stdout。默认是将单个流写入 stdout。启用 LoggingAlphaOptions Feature Gate 来使用此功能。

--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 时无效)。单位为兆字节。如果值为 0,则最大文件大小不受限制。

--logging-format string     默认值: "text"

设置日志格式。允许的格式:"text"。

--logtostderr     默认值: true

将日志输出到标准错误而不是文件

--masquerade-all

对所有通过 Service 集群 IP 发送的流量进行 SNAT。某些 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 列表,则 NodePort Service 的连接将仅接受在指定范围内的节点 IP 上。如果设置为 'primary',则 NodePort Service 将仅接受根据 Node 对象确定的节点主 IP 上。如果未设置,则 NodePort 连接将在所有本地 IP 上接受。如果通过 --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 处理程序上的 Web 界面启用性能分析。如果通过 --config 指定了配置文件,则忽略此参数。

--proxy-mode ProxyMode

要使用的代理模式:在 Linux 上可以是 'iptables'(默认)、'ipvs' 或 'nftables'。在 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 项目中的其他地方进行。

最后修改时间 2025 年 4 月 24 日 太平洋标准时间 (PST) 7:58 AM:v1.33 组件参考 (05a3c54633)