kube-proxy

概要

Kubernetes 网络代理运行在每个节点上。它将 Kubernetes API 中定义的服务反映在每个节点上,并且可以执行简单的 TCP、UDP 和 SCTP 流量转发,或者在多个后端之间进行 TCP、UDP 和 SCTP 轮询转发。服务集群 IP 和端口目前是通过 Docker 链接兼容的环境变量找到的,这些变量指定了服务代理打开的端口。有一个可选的插件可以为这些集群 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 时,如果流量的源 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

UNREPLIED UDP 连接的空闲超时(0 表示保持不变)

--conntrack-udp-timeout-stream duration

ASSURED UDP 连接的空闲超时(0 表示保持不变)

--detect-local-mode LocalMode

用于检测本地流量的模式。如果通过 --config 指定了配置文件,则忽略此参数。

--feature-gates <以逗号分隔的“键=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(测试版 - 默认值:true)
StructuredAuthorizationConfiguration=true|false(测试版 - 默认值:true)
TopologyAwareHints=true|false(测试版 - 默认值:true)
TopologyManagerPolicyAlphaOptions=true|false(Alpha 版 - 默认值:false)
TopologyManagerPolicyBetaOptions=true|false(测试版 - 默认值:true)
TopologyManagerPolicyOptions=true|false(测试版 - 默认值:true)
TranslateStreamCloseWebsocketRequests=true|false(测试版 - 默认值:true)
UnauthenticatedHTTP2DOSMitigation=true|false(测试版 - 默认值:true)
UnknownVersionInteroperabilityProxy=true|false(Alpha 版 - 默认值:false)
UserNamespacesPodSecurityStandards=true|false(Alpha 版 - 默认值:false)
UserNamespacesSupport=true|false(测试版 - 默认值:false)
VolumeAttributesClass=true|false(Alpha 版 - 默认值:false)
VolumeCapacityPriority=true|false(Alpha 版 - 默认值:false)
WatchFromStorageWithoutResourceVersion=true|false(测试版 - 默认值:false)
WatchList=true|false(Alpha 版 - 默认值:false)
WatchListClient=true|false(测试版 - 默认值:false)
WinDSR=true|false(Alpha 版 - 默认值:false)
WinOverlay=true|false(测试版 - 默认值: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)。设置为 empty 可禁用。如果通过 --config 指定了配置文件,则忽略此参数。

-h, --help

kube-proxy 的帮助信息

--hostname-override 字符串

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

--init-only

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

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

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

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

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

--iptables-min-sync-period 时长     默认值:1 秒

iptables 规则重新同步之间的最短时间段(例如“5 秒”、“1 分钟”、“2 小时 22 分钟”)。值为 0 表示每个 Service 或 EndpointSlice 更改都会导致立即重新同步 iptables。

--iptables-sync-period 时长     默认值:30 秒

指示执行各种重新同步和清理操作的频率的时间间隔(例如“5 秒”、“1 分钟”、“2 小时 22 分钟”)。必须大于 0。

--ipvs-exclude-cidrs 字符串

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

--ipvs-min-sync-period 时长

IPVS 规则重新同步之间的最短时间段(例如“5 秒”、“1 分钟”、“2 小时 22 分钟”)。值为 0 表示每个 Service 或 EndpointSlice 更改都会导致立即重新同步 IPVS。

--ipvs-scheduler 字符串

代理模式为 ipvs 时的 ipvs 调度程序类型

--ipvs-strict-arp

通过将 arp_ignore 设置为 1 并将 arp_announce 设置为 2 来启用严格的 ARP

--ipvs-sync-period 时长     默认值:30 秒

指示执行各种重新同步和清理操作的频率的时间间隔(例如“5 秒”、“1 分钟”、“2 小时 22 分钟”)。必须大于 0。

--ipvs-tcp-timeout 时长

空闲 IPVS TCP 连接的超时时间,0 表示保持原样。(例如“5 秒”、“1 分钟”、“2 小时 22 分钟”)。

--ipvs-tcpfin-timeout 时长

接收到 FIN 数据包后 IPVS TCP 连接的超时时间,0 表示保持原样。(例如“5 秒”、“1 分钟”、“2 小时 22 分钟”)。

--ipvs-udp-timeout 时长

IPVS UDP 数据包的超时时间,0 表示保持原样。(例如“5 秒”、“1 分钟”、“2 小时 22 分钟”)。

--kube-api-burst int32     默认值:10

与 Kubernetes API 服务器通信时使用的突发量

--kube-api-content-type 字符串     默认值:“application/vnd.kubernetes.protobuf”

发送到 API 服务器的请求的内容类型。

--kube-api-qps 浮点数     默认值:5

与 Kubernetes API 服务器通信时使用的 QPS

--kubeconfig 字符串

包含授权信息的 kubeconfig 文件的路径(主位置可以由 master 标志覆盖)。

--log-flush-frequency 时长     默认值:5 秒

两次日志刷新之间的最长时间(以秒为单位)

--log-text-info-buffer-size 数量

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

--log-text-split-stream

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

--log_backtrace_at <格式为“文件:N”的字符串>     默认值::0

当日志命中行“文件:N”时,发出堆栈跟踪

--log_dir 字符串

如果非空,则将日志文件写入此目录(当 -logtostderr=true 时无效)

--log_file 字符串

如果非空,则使用此日志文件(当 -logtostderr=true 时无效)

--log_file_max_size uint     默认值:1800

定义日志文件可以增长的最大大小(当 -logtostderr=true 时无效)。单位为兆字节。如果值为 0,则最大文件大小不受限制。

--logging-format 字符串     默认值:“text”

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

--logtostderr     默认值:true

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

--masquerade-all

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

--master 字符串

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”以绑定到所有接口。)设置为 empty 可禁用。如果通过 --config 指定了配置文件,则忽略此参数。

--nodeport-addresses 字符串

包含有效节点 IP 的 CIDR 范围列表。如果设置,则仅在其中一个指示的范围内的节点 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 字符串

网桥接口名称。当 --detect-local-mode 设置为 BridgeInterface 时,如果流量源自此网桥,kube-proxy 会将其视为本地流量。

--pod-interface-name-prefix 字符串

接口名称前缀。当 --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 字符串

要显示隐藏指标的先前版本。只有先前的次要版本才有意义,不允许使用其他值。格式为 <主版本号>.<次版本号>,例如:“1.16”。此格式的目的是确保您有机会注意到下一个版本是否隐藏了其他指标,而不是在该版本之后的版本中永久删除这些指标时感到惊讶。如果通过 --config 指定了配置文件,则忽略此参数。

--skip_headers

如果为 true,则避免在日志消息中使用标题前缀

--skip_log_headers

如果为 true,则在打开日志文件时避免使用标题(当 -logtostderr=true 时无效)

--stderrthreshold int     默认值:2

等于或高于此阈值的日志在写入文件和标准错误输出时将发送到标准错误输出(当 -logtostderr=true 或 -alsologtostderr=true 时无效)

-v, --v int

日志级别详细程度的数字

--version 版本 [=true]

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

--vmodule 模式=N,...

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

--write-config-to 字符串

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

此页面是自动生成的。

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

上次修改时间:2024 年 4 月 18 日下午 6:12(太平洋标准时间):更新 v1.30 的 kube-xxx 组件参考 (571276338b)