kube-proxy 配置 (v1alpha1)

资源类型

ClientConnectionConfiguration

出现在:

ClientConnectionConfiguration 包含构造客户端所需要的细节信息。

字段描述
kubeconfig [必需]
string

kubeconfig 字段是指向一个 KubeConfig 文件的路径。

acceptContentTypes [必需]
string

acceptContentTypes 字段定义客户端在连接到服务器时所发送的 Accept 头部字段。 此设置值会覆盖默认配置 ‘application/json’。 此字段会控制某特定客户端与指定服务器的所有链接。

contentType [必需]
string

contentType 字段是从此客户端向服务器发送数据时使用的内容类型(Content Type)。

qps [必需]
float32

qps 字段控制此连接上每秒钟可以发送的查询请求个数。

burst [必需]
int32

burst 字段允许客户端超出其速率限制时可以临时累积的额外查询个数。

DebuggingConfiguration

出现在:

DebuggingConfiguration 包含调试相关功能的配置。

字段描述
enableProfiling [Required]
bool

enableProfiling 字段通过位于 host:port/debug/pprof/ 的 Web 接口启用性能分析。

enableContentionProfiling [Required]
bool

enableContentionProfiling 字段在 enableProfiling 为 true 时启用阻塞分析。

LeaderElectionConfiguration

出现在:

LeaderElectionConfiguration 为能够支持领导者选举的组件定义其领导者选举客户端的配置。

字段描述
leaderElect [必需]
bool

leaderElect 字段允许领导者选举客户端在进入主循环执行之前先获得领导者角色。 运行多副本组件时启用此功能有助于提高可用性。

leaseDuration [必需]
meta/v1.Duration

leaseDuration 字段是非领导角色候选者在观察到需要领导席位更新时要等待的时间; 只有经过所设置时长才可以尝试去获得一个仍处于领导状态但需要被刷新的席位。 这里的设置值本质上意味着某个领导者在被另一个候选者替换掉之前可以停止运行的最长时长。 只有当启用了领导者选举时此字段有意义。

renewDeadline [必需]
meta/v1.Duration

renewDeadline 字段设置的是当前领导者在停止扮演领导角色之前需要刷新领导状态的时间间隔。 此值必须小于或等于租约期限的长度。只有到启用了领导者选举时此字段才有意义。

retryPeriod [必需]
meta/v1.Duration

retryPeriod 字段是客户端在连续两次尝试获得或者刷新领导状态之间需要等待的时长。 只有当启用了领导者选举时此字段才有意义。

resourceLock [必需]
string

resourceLock 字段给出在领导者选举期间要作为锁来使用的资源对象类型。

resourceName [必需]
string

resourceName 字段给出在领导者选举期间要作为锁来使用的资源对象名称。

resourceNamespace [必需]
string

resourceNamespace 字段给出在领导者选举期间要作为锁来使用的资源对象所在名字空间。

KubeProxyConfiguration

KubeProxyConfiguration 包含用来配置 Kubernetes 代理服务器的所有配置信息。

字段描述
apiVersion
string
kubeproxy.config.k8s.io/v1alpha1
kind
string
KubeProxyConfiguration
featureGates [必需]
map[string]bool

featureGates 字段是一个功能特性名称到布尔值的映射表, 用来启用或者禁用测试性质的功能特性。

clientConnection [必需]
ClientConnectionConfiguration

clientConnection 指定了代理服务器与 apiserver 通信时应使用的 kubeconfig 文件和客户端连接设置。

logging [必需]
LoggingConfiguration

logging 指定了日志记录的选项。有关更多信息, 请参阅日志选项

hostnameOverride [必需]
string

hostnameOverride 如果不为空,将作为 kube-proxy 所运行节点的名称使用。 如果未设置,则默认使用节点的主机名作为节点名称。

bindAddress [必需]
string

bindAddress 可以用来指定 kube-proxy 所认为的节点主 IP。请注意, 虽然名称中有绑定的意思,但实际上 kube-proxy 并不会将任何套接字绑定到这个 IP 地址上。

healthzBindAddress [必需]
string

healthzBindAddress 是健康检查服务器的 IP 地址和端口,默认情况下, 如果 bindAddress 未设置或为 IPv4,则为 “0.0.0.0:10256”;如果 bindAddress 为 IPv6, 则为 “[::]:10256”。

metricsBindAddress [必需]
string

metricsBindAddress 是指标服务器监听的 IP 地址和端口,默认情况下, 如果 bindAddress 未设置或为 IPv4,则为 “127.0.0.1:10249”; 如果 bindAddress 为 IPv6,则为 “[::1]:10249”。 (设置为 “0.0.0.0:10249” / “[::]:10249” 以绑定到所有接口。)。

bindAddressHardFail [必需]
bool

bindAddressHardFail 字段设置为 true 时, kube-proxy 将无法绑定到某端口这类问题视为致命错误并直接退出。

enableProfiling [必需]
bool

enableProfiling 字段通过 ‘/debug/pprof’ 处理程序在 Web 界面上启用性能分析。 性能分析处理程序将由指标服务器执行。

showHiddenMetricsForVersion [必需]
string

showHiddenMetricsForVersion 用于指定要显示隐藏指标的版本。

mode [必需]
ProxyMode

mode 指定要使用的代理模式。

iptables [必需]
KubeProxyIPTablesConfiguration

iptables 字段字段包含与 iptables 相关的配置选项。

ipvs [必需]
KubeProxyIPVSConfiguration

ipvs 字段中包含与 ipvs 相关的配置选项。

nftables [必需]
KubeProxyNFTablesConfiguration

nftables 包含与 nftables 相关的配置选项。

winkernel [必需]
KubeProxyWinkernelConfiguration

winkernel 包含与 winkernel 相关的配置选项。

detectLocalMode [必需]
LocalMode

detectLocalMode 确定用于检测本地流量的模式,默认为 ClusterCIDR。

detectLocal [必需]
DetectLocalConfiguration

detectLocal 包含与 DetectLocalMode 相关的可选配置设置。

clusterCIDR [必需]
string

clusterCIDR 指定集群中 Pod 的 CIDR 范围。 (对于双栈集群,这个参数可以是一个用逗号分隔的双栈 CIDR 范围对。) 当 DetectLocalMode 设置为 LocalModeClusterCIDR 时,如果流量的源 IP 在这个范围内, kube-proxy 会将其视为本地流量。(否则不会使用此设置。)

nodePortAddresses [必需]
[]string

nodePortAddresses 是一个包含有效节点 IP 的 CIDR 范围列表或单个字符串 primary。 如果设置为 CIDR 范围列表,只有来自这些范围内的节点 IP 的 NodePort 服务连接才会被接受。 如果设置为 primary,则根据 Node 对象,NodePort 服务将仅在节点的主 IPv4 和/或 IPv6 地址上被接受。 如果未设置,将接受所有本地 IP 的 NodePort 连接。

oomScoreAdj [必需]
int32

oomScoreAdj 是 kube-proxy 进程的 OOM 评分调整值。该值必须在 [-1000, 1000] 范围内。

conntrack [必需]
KubeProxyConntrackConfiguration

conntrack 包含与 conntrack 相关的配置选项。

configSyncPeriod [必需]
meta/v1.Duration

configSyncPeriod 指定从 apiserver 刷新配置的频率,必须大于 0。

portRange [必需]
string

portRange 之前用于配置用户空间代理,但现在已不再使用。

windowsRunAsService [Required]
bool

如果为 windowsRunAsService 为 True,则启用 Windows 服务控制管理器 API 集成。

DetectLocalConfiguration

出现在:

DetectLocalConfiguration 包含与 DetectLocalMode 选项相关的可选设置。

字段描述
bridgeInterface [必需]
string

bridgeInterface 指的是桥接接口的名称。 当 DetectLocalMode 设置为 LocalModeBridgeInterface 时, 如果流量来自这个桥接接口,kube-proxy 会将其视为本地流量。

interfaceNamePrefix [必需]
string

interfaceNamePrefix 是接口名称的前缀。 当 DetectLocalMode 设置为 LocalModeInterfaceNamePrefix 时, 如果流量来自任何名称以该前缀开头的接口,kube-proxy 会将其视为本地流量。

KubeProxyConntrackConfiguration

出现在:

KubeProxyConntrackConfiguration 包含为 Kubernetes 代理服务器提供的 conntrack 设置。

字段描述
maxPerCore [必需]
int32

maxPerCore 字段是每个 CPU 核所跟踪的 NAT 链接个数上限 (0 意味着保留当前上限限制并忽略 min 字段设置值)。

min [必需]
int32

min 字段给出要分配的链接跟踪记录个数下限。 设置此值时会忽略 maxPerCore 的值(将 maxPerCore 设置为 0 时不会调整上限值)。

tcpEstablishedTimeout [必需]
meta/v1.Duration

tcpEstablishedTimeout 字段给出空闲 TCP 连接的保留时间(例如,’2s’)。 此值必须大于 0。

tcpCloseWaitTimeout [必需]
meta/v1.Duration

tcpCloseWaitTimeout 字段用来设置空闲的、处于 CLOSE_WAIT 状态的 conntrack 条目 保留在 conntrack 表中的时间长度(例如,’60s’)。 此设置值必须大于 0。

tcpBeLiberal [必需]
bool

tcpBeLiberal 如果设置为 true, kube-proxy 将配置 conntrack 以宽松模式运行, 对于 TCP 连接和超出窗口序列号的报文不会被标记为 INVALID。

udpTimeout [必需]
meta/v1.Duration

udpTimeout 指定处于 UNREPLIED 状态的空闲 UDP conntrack 条目在 conntrack 表中保留的时间 (例如 ‘30s’)。该值必须大于 0。

udpStreamTimeout [必需]
meta/v1.Duration

udpStreamTimeout 指定处于 ASSURED 状态的空闲 UDP conntrack 条目在 conntrack 表中保留的时间 (例如 ‘300s’)。该值必须大于 0。

KubeProxyIPTablesConfiguration

出现在:

KubeProxyIPTablesConfiguration 包含用于 Kubernetes 代理服务器的、与 iptables 相关的配置细节。

字段描述
masqueradeBit [必需]
int32

masqueradeBit 字段是 iptables fwmark 空间中的具体一位, 用来在 iptables 或 ipvs 代理模式下设置 SNAT。此值必须介于 [0, 31](含边界值)。

masqueradeAll [必需]
bool

masqueradeAll 字段用来通知 kube-proxy 在使用 iptables 或 ipvs 代理模式时对所有流量执行 SNAT 操作。这在某些 CNI 插件中可能是必需的。

localhostNodePorts [必需]
bool

localhostNodePorts 如果设置为 false, 则会通知 kube-proxy 禁用通过本地主机访问 NodePort 服务的旧有行为。 (仅适用于 iptables 模式和 IPv4;在其他代理模式或 IPv6 下,不允许本地主机访问 NodePort 服务。)

syncPeriod [必需]
meta/v1.Duration

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

minSyncPeriod [必需]
meta/v1.Duration

minSyncPeriod 是 iptables 规则重新同步的最小时间间隔(例如 ‘5s’、’1m’、’2h22m’)。 如果值为 0,表示每次服务或 EndpointSlice 发生变化时都会立即重新同步 iptables。

KubeProxyIPVSConfiguration

出现在:

KubeProxyIPVSConfiguration 包含用于 Kubernetes 代理服务器的、与 ipvs 相关的配置细节。

字段描述
syncPeriod [必需]
meta/v1.Duration

syncPeriod 是各种重新同步和清理操作执行频率的时间间隔(例如 ‘5s’, ‘1m’, ‘2h22m’)。 该值必须大于 0

minSyncPeriod [必需]
meta/v1.Duration

minSyncPeriod 是 IPVS 规则重新同步之间的最小时间间隔(例如 ‘5s’, ‘1m’, ‘2h22m’)。 值为 0 表示每次服务或 EndpointSlice 发生变化时都会立即触发 IPVS 重新同步。

scheduler [必需]
string

scheduler 是用于 IPVS 的调度器。

excludeCIDRs [必需]
[]string

excludeCIDRs 字段取值为一个 CIDR 列表,ipvs 代理程序在清理 IPVS 服务时不应触碰这些 IP 地址。

strictARP [必需]
bool

strictARP 字段用来配置 arp_ignore 和 arp_announce,以避免(错误地)响应来自 kube-ipvs0 接口的 ARP 查询请求。

tcpTimeout [必需]
meta/v1.Duration

tcpTimeout 字段是用于设置空闲 IPVS TCP 会话的超时值。 默认值为 0,意味着使用系统上当前的超时值设置。

tcpFinTimeout [必需]
meta/v1.Duration

tcpFinTimeout 字段用来设置 IPVS TCP 会话在收到 FIN 之后的超时值。 默认值为 0,意味着使用系统上当前的超时值设置。

udpTimeout [必需]
meta/v1.Duration

udpTimeout 字段用来设置 IPVS UDP 包的超时值。 默认值为 0,意味着使用系统上当前的超时值设置。

KubeProxyNFTablesConfiguration

出现在:

KubeProxyNFTablesConfiguration 包含 Kubernetes 代理服务器的 nftables 相关配置详细信息。

FieldDescription
masqueradeBit [必需]
int32

masqueradeBit 字段是 iptables fwmark 空间中的具体一位, 用来在 nftables 代理模式下设置 SNAT。此值必须介于 [0, 31](含边界值)。

masqueradeAll [必需]
bool

masqueradeAll 通知 kube-proxy 在使用 nftables 模式时, 对发送到服务集群 IP 的所有流量执行 SNAT。这在某些 CNI 插件中可能是必需的。

syncPeriod [必需]
meta/v1.Duration

syncPeriod 表示各种重新同步和清理操作执行频率的时间间隔(例如 ‘5s’, ‘1m’, ‘2h22m’)。 该值必须大于 0。

minSyncPeriod [必需]
meta/v1.Duration

minSyncPeriod是 iptables 规则重新同步之间的最小时间间隔(例如 ‘5s’, ‘1m’, ‘2h22m’)。 值为 0 时,表示每次服务或 EndpointSlice 发生变化时都会立即重新同步 iptables。

KubeProxyWinkernelConfiguration

出现在:

KubeProxyWinkernelConfiguration 包含 Kubernetes 代理服务器的 Windows/HNS 设置。

字段描述
networkName [必需]
string

networkName 字段是 kube-proxy 用来创建端点和策略的网络名称。

sourceVip [必需]
string

sourceVip 字段是执行负载均衡时进行 NAT 转换所使用的源端 VIP 端点 IP 地址。

enableDSR [必需]
bool

enableDSR 字段通知 kube-proxy 是否使用 DSR 来创建 HNS 策略。

rootHnsEndpointName [必需]
string

rootHnsEndpointName 字段是附加到用于根网络命名空间二层桥接的 hnsendpoint 的名称。

forwardHealthCheckVip [必需]
bool

forwardHealthCheckVip 字段为 Windows 上的健康检查端口转发服务 VIP。

LocalMode

string 类型的别名)

出现在:

LocalMode 代表的是对节点上本地流量进行检测的模式。

ProxyMode

string 类型的别名)

出现在:

ProxyMode 表示的是 Kubernetes 代理服务器所使用的模式。

目前 Linux 平台上有两种可用的代理模式:’iptables’ 和 ‘ipvs’。 在 Windows 平台上可用的一种代理模式是:’kernelspace’。

如果代理模式未被指定,将使用最佳可用的代理模式(目前在 Linux 上是 iptables,在 Windows 上是 kernelspace)。 如果不能使用选定的代理模式(由于缺少内核支持、缺少用户空间组件等),则 kube-proxy 将出错并退出。