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 实际上不会将任何套接字绑定到此 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 在此范围内,则 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/实验性功能的特性门控。选项为
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 权限完成的任何初始化步骤,然后退出。执行此操作后,您可以仅使用 CAP_NET_ADMIN 功能再次运行 kube-proxy。

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

在收到 FIN 数据包后 IPVS TCP 连接的超时时间,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)、1000 的倍数 (1K)、1024 的倍数 (2Ki) 或这些的幂 (3M、4G、5Mi、6Gi)。启用 LoggingAlphaOptions 特性门以使用此功能。

--log-text-split-stream

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

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

当日志记录到达文件: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

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",则只会在根据 Node 对象确定的节点主 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 处理程序在 Web 界面上启用性能分析。如果通过 --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:为 v1.32 重新生成组件参考 (f88d4ccd1d)