kube-proxy

提要

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

kube-proxy [flags]

选项

--add_dir_header

如果为真,则将文件目录添加到日志消息的标题中

--alsologtostderr

除了文件外,还要记录到标准错误(当 -logtostderr=true 时无效)

--bind-address string     默认值:0.0.0.0

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

--bind-address-hard-fail

如果为真,kube-proxy 将将无法绑定到端口视为致命错误并退出

--cleanup

如果为真,则清理 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/实验功能的功能门控。选项为
APIResponseCompression=true|false (BETA - 默认值=true)
APIServerIdentity=true|false (BETA - 默认值=true)
APIServerTracing=true|false (BETA - 默认值=true)
APIServingWithRoutine=true|false (BETA - 默认值=true)
AllAlpha=true|false (ALPHA - 默认值=false)
AllBeta=true|false (BETA - 默认值=false)
AnyVolumeDataSource=true|false (BETA - 默认值=true)
AppArmor=true|false (BETA - 默认值=true)
AppArmorFields=true|false (BETA - 默认值=true)
CPUManagerPolicyAlphaOptions=true|false (ALPHA - 默认值=false)
CPUManagerPolicyBetaOptions=true|false (BETA - 默认值=true)
CPUManagerPolicyOptions=true|false (BETA - 默认值=true)
CRDValidationRatcheting=true|false (BETA - 默认值=true)
CSIMigrationPortworx=true|false (BETA - 默认值=false)
CSIVolumeHealth=true|false (ALPHA - 默认值=false)
CloudControllerManagerWebhook=true|false (ALPHA - 默认值=false)
ClusterTrustBundle=true|false (ALPHA - 默认值=false)
ClusterTrustBundleProjection=true|false (ALPHA - 默认值=false)
ComponentSLIs=true|false (BETA - 默认值=true)
ConsistentListFromCache=true|false (ALPHA - 默认值=false)
ContainerCheckpoint=true|false (BETA - 默认值=true)
ContextualLogging=true|false (BETA - 默认值=true)
CronJobsScheduledAnnotation=true|false (BETA - 默认值=true)
CrossNamespaceVolumeDataSource=true|false (ALPHA - 默认值=false)
CustomCPUCFSQuotaPeriod=true|false (ALPHA - 默认值=false)
CustomResourceFieldSelectors=true|false (ALPHA - 默认值=false)
DevicePluginCDIDevices=true|false (BETA - 默认值=true)
DisableCloudProviders=true|false (BETA - 默认值=true)
DisableKubeletCloudCredentialProviders=true|false (BETA - 默认值=true)
DisableNodeKubeProxyVersion=true|false (ALPHA - 默认值=false)
DynamicResourceAllocation=true|false (ALPHA - 默认值=false)
ElasticIndexedJob=true|false (BETA - 默认值=true)
EventedPLEG=true|false (ALPHA - 默认值=false)
GracefulNodeShutdown=true|false (BETA - 默认值=true)
GracefulNodeShutdownBasedOnPodPriority=true|false (BETA - 默认值=true)
HPAScaleToZero=true|false (ALPHA - 默认值=false)
HonorPVReclaimPolicy=true|false (ALPHA - 默认值=false)
ImageMaximumGCAge=true|false (BETA - 默认值=true)
InPlacePodVerticalScaling=true|false (ALPHA - 默认值=false)
InTreePluginAWSUnregister=true|false (ALPHA - 默认值=false)
InTreePluginAzureDiskUnregister=true|false (ALPHA - 默认值=false)
InTreePluginAzureFileUnregister=true|false (ALPHA - 默认值=false)
InTreePluginGCEUnregister=true|false (ALPHA - 默认值=false)
InTreePluginOpenStackUnregister=true|false (ALPHA - 默认值=false)
InTreePluginPortworxUnregister=true|false (ALPHA - 默认值=false)
InTreePluginvSphereUnregister=true|false (ALPHA - 默认值=false)
InformerResourceVersion=true|false (ALPHA - 默认值=false)
JobBackoffLimitPerIndex=true|false (BETA - 默认值=true)
JobManagedBy=true|false (ALPHA - 默认值=false)
JobPodFailurePolicy=true|false (BETA - 默认值=true)
JobPodReplacementPolicy=true|false (BETA - 默认值=true)
JobSuccessPolicy=true|false (ALPHA - 默认值=false)
KubeProxyDrainingTerminatingNodes=true|false (BETA - 默认值=true)
KubeletCgroupDriverFromCRI=true|false (ALPHA - 默认值=false)
KubeletInUserNamespace=true|false (ALPHA - 默认值=false)
KubeletPodResourcesDynamicResources=true|false (ALPHA - 默认值=false)
KubeletPodResourcesGet=true|false (ALPHA - 默认值=false)
KubeletSeparateDiskGC=true|false (ALPHA - 默认值=false)
KubeletTracing=true|false (BETA - 默认值=true)
LoadBalancerIPMode=true|false (BETA - 默认值=true)
LocalStorageCapacityIsolationFSQuotaMonitoring=true|false (ALPHA - 默认值=false)
LogarithmicScaleDown=true|false (BETA - 默认值=true)
LoggingAlphaOptions=true|false (ALPHA - 默认值=false)
LoggingBetaOptions=true|false (BETA - 默认值=true)
MatchLabelKeysInPodAffinity=true|false (ALPHA - 默认值=false)
MatchLabelKeysInPodTopologySpread=true|false (BETA - 默认值=true)
MaxUnavailableStatefulSet=true|false (ALPHA - 默认值=false)
MemoryManager=true|false (BETA - 默认值=true)
MemoryQoS=true|false (ALPHA - 默认值=false)
MultiCIDRServiceAllocator=true|false (ALPHA - 默认值=false)
MutatingAdmissionPolicy=true|false (ALPHA - 默认值=false)
NFTablesProxyMode=true|false (ALPHA - 默认值=false)
NodeInclusionPolicyInPodTopologySpread=true|false (BETA - 默认值=true)
NodeLogQuery=true|false (BETA - 默认值=false)
NodeSwap=true|false (BETA - 默认值=true)
OpenAPIEnums=true|false (BETA - 默认值=true)
PDBUnhealthyPodEvictionPolicy=true|false (BETA - 默认值=true)
PersistentVolumeLastPhaseTransitionTime=true|false (BETA - 默认值=true)
PodAndContainerStatsFromCRI=true|false (ALPHA - 默认值=false)
PodDeletionCost=true|false (BETA - 默认值=true)
PodDisruptionConditions=true|false (BETA - 默认值=true)
PodIndexLabel=true|false (BETA - 默认值=true)
PodLifecycleSleepAction=true|false (BETA - 默认值=true)
PodReadyToStartContainersCondition=true|false (BETA - 默认值=true)
PortForwardWebsockets=true|false (ALPHA - 默认值=false)
ProcMountType=true|false (ALPHA - 默认值=false)
QOSReserved=true|false (ALPHA - 默认值=false)
RecoverVolumeExpansionFailure=true|false (ALPHA - 默认值=false)
RecursiveReadOnlyMounts=true|false (ALPHA - 默认值=false)
RelaxedEnvironmentVariableValidation=true|false (ALPHA - 默认值=false)
RetryGenerateName=true|false (ALPHA - 默认值=false)
RotateKubeletServerCertificate=true|false (BETA - 默认值=true)
RuntimeClassInImageCriApi=true|false (ALPHA - 默认值=false)
SELinuxMount=true|false (ALPHA - 默认值=false)
SELinuxMountReadWriteOncePod=true|false (BETA - 默认值=true)
SchedulerQueueingHints=true|false (BETA - 默认值=false)
SeparateCacheWatchRPC=true|false (BETA - 默认值=true)
SeparateTaintEvictionController=true|false (BETA - 默认值=true)
ServiceAccountTokenJTI=true|false (BETA - 默认值=true)
ServiceAccountTokenNodeBinding=true|false (ALPHA - 默认值=false)
ServiceAccountTokenNodeBindingValidation=true|false (BETA - 默认值=true)
ServiceAccountTokenPodNodeInfo=true|false (BETA - 默认值=true)
ServiceTrafficDistribution=true|false (ALPHA - 默认值=false)
SidecarContainers=true|false (BETA - 默认值=true)
SizeMemoryBackedVolumes=true|false (BETA - 默认值=true)
StatefulSetAutoDeletePVC=true|false (BETA - 默认值=true)
StatefulSetStartOrdinal=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)
StructuredAuthorizationConfiguration=true|false (BETA - 默认值=true)
TopologyAwareHints=true|false (BETA - 默认值=true)
TopologyManagerPolicyAlphaOptions=true|false (ALPHA - 默认值=false)
TopologyManagerPolicyBetaOptions=true|false (BETA - 默认值=true)
TopologyManagerPolicyOptions=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 (ALPHA - 默认值=false)
VolumeCapacityPriority=true|false (ALPHA - 默认值=false)
WatchFromStorageWithoutResourceVersion=true|false (BETA - 默认值=false)
WatchList=true|false (ALPHA - 默认值=false)
WatchListClient=true|false (BETA - 默认值=false)
WinDSR=true|false (ALPHA - 默认值=false)
WinOverlay=true|false (BETA - 默认值=true)
WindowsHostNetwork=true|false (ALPHA - 默认值=true)
如果通过 --config 指定配置文件,则此参数将被忽略。

--healthz-bind-address ipport     默认值:0.0.0.0:10256

健康检查服务器要服务于的 IP 地址和端口,默认为“0.0.0.0:10256”(如果 --bind-address 未设置或为 IPv4),或“[::]:10256”(如果 --bind-address 为 IPv6)。设置为空以禁用。如果通过 --config 指定配置文件,则此参数将被忽略。

-h, --help

kube-proxy 的帮助信息

--hostname-override string

如果非空,将用作 kube-proxy 运行的节点名称。如果未设置,则节点名称将假定与节点主机名相同。

--init-only

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

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

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

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

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

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

iptables 规则重新同步之间的最短间隔(例如“5s”、“1m”、“2h22m”)。值为 0 表示每个服务或 EndpointSlice 更改都会导致立即进行 iptables 重新同步。

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

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

--ipvs-exclude-cidrs strings

一个逗号分隔的 CIDR 列表,ipvs 代理在清理 IPVS 规则时不应触及这些 CIDR。

--ipvs-min-sync-period duration

IPVS 规则重新同步之间的最短间隔(例如“5s”、“1m”、“2h22m”)。值为 0 表示每个服务或 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 标志覆盖)。

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

日志刷新之间的最大秒数

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

在具有拆分输出流的文本格式中,可以将信息消息缓冲一段时间以提高性能。零字节的默认值将禁用缓冲。大小可以指定为字节数(512)、1000 的倍数(1K)、1024 的倍数(2Ki)或这些的幂(3M、4G、5Mi、6Gi)。启用 LoggingAlphaOptions 功能门来使用此功能。

--log-text-split-stream

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

--log_backtrace_at <a string in the form '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

如果使用 iptables 或 ipvs 代理模式,则对通过服务集群 IP 发送的所有流量进行 SNAT。这在某些 CNI 插件中可能需要。

--master string

Kubernetes API 服务器的地址(覆盖 kubeconfig 中的任何值)

--metrics-bind-address ipport     默认值:127.0.0.1:10249

指标服务器要服务于的 IP 地址和端口,默认为“127.0.0.1:10249”(如果 --bind-address 未设置或为 IPv4),或“[::1]:10249”(如果 --bind-address 为 IPv6)。(设置为“0.0.0.0:10249” / “[::]:10249” 以绑定到所有接口。)设置为为空以禁用。如果 --config 指定了配置文件,则此参数将被忽略。

--nodeport-addresses strings

包含有效节点 IP 的 CIDR 范围列表。如果设置,则只能在指示的范围内的节点 IP 上接受到 NodePort 服务的连接。如果未设置,则将在所有本地 IP 上接受 NodePort 连接。如果 --config 指定了配置文件,则此参数将被忽略。

--one_output

如果为真,则仅将日志写入其本机严重级别(而不是也写入每个较低的严重级别;当 -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

如果为真,则通过 /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

如果为真,则避免日志消息中的标题前缀

--skip_log_headers

如果为真,则在打开日志文件时避免标题(当 -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 年 4 月 18 日下午 6:12 PST:更新 v1.30 的 kube-xxx 组件引用 (571276338b)