kube-proxy

Synopsis

Kubernetes 网络代理运行在每个节点上。它在每个节点上反映 Kubernetes API 定义的服务,并能够进行简单的 TCP、UDP 和 SCTP 流转发,或者在多个后端之间进行 TCP、UDP 和 SCTP 的轮循转发。服务集群 IP 和端口目前通过兼容 Docker-links 的环境变量来查找,这些环境变量指定了服务代理打开的端口。有一个可选的附加组件可以为这些集群 IP 提供集群 DNS。用户必须通过 apiserver API 创建一个服务来配置代理。

kube-proxy [flags]

Options

--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 时,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' 对>

描述 alpha/experimental 功能的键值对集合。选项包括:
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 运行的节点的名称。如果未设置,则节点名称假定与节点的 hostname 相同。

--init-only

如果为 true,则执行任何必须具有完全 root 权限的初始化步骤,然后退出。完成此操作后,您可以再次运行 kube-proxy,只赋予 CAP_NET_ADMIN 能力。

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

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

--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

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 通信时使用的突发流量

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

日志刷新之间的最大秒数

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

[Alpha] 在文本模式下使用分离的输出流时,信息消息可以缓冲一段时间以提高性能。零字节的默认值禁用缓冲。大小可以指定为字节数(512)、千字节的倍数(1K)、千字节的倍数(2Ki)或这些的幂(3M、4G、5Mi、6Gi)。启用 LoggingAlphaOptions 功能门即可使用此功能。

--log-text-split-stream

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

--log_backtrace_at <格式为 'file:N' 的字符串>     默认值::0

当日志记录到达 line 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 列表,则仅接受来自指示范围内的节点 IP 的 NodePort 服务连接。如果设置为 'primary',则 NodePort 服务仅接受来自节点对象指示的节点主 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 handler 上的 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(当 -logtostderr=true 或 -alsologtostderr=true 时无效)

-v, --v int

用于日志级别详细程度的数字

--version version[=true]

--version, --version=raw 打印版本信息并退出;--version=vX.Y.Z... 设置报告的版本

--vmodule pattern=N,...

用于文件过滤日志的模式=N 设置的逗号分隔列表(仅适用于文本日志格式)

--write-config-to string

如果设置,则将默认配置值写入此文件并退出。

本页面是自动生成的。

如果你打算报告此页面存在的问题,请在问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改时间:2025 年 4 月 24 日上午 7:58 PST:v1.33 的组件参考 (05a3c54633)