Documented AWS ELB annotations (#6692)
This commit is contained in:
committed by
Zach Corleissen
parent
ca5bafeb59
commit
cd2b03e4bc
@@ -180,7 +180,7 @@ removal of `Service` and `Endpoints` objects. For each `Service`, it installs
|
|||||||
iptables rules which capture traffic to the `Service`'s `clusterIP` (which is
|
iptables rules which capture traffic to the `Service`'s `clusterIP` (which is
|
||||||
virtual) and `Port` and redirects that traffic to one of the `Service`'s
|
virtual) and `Port` and redirects that traffic to one of the `Service`'s
|
||||||
backend sets. For each `Endpoints` object, it installs iptables rules which
|
backend sets. For each `Endpoints` object, it installs iptables rules which
|
||||||
select a backend `Pod`.By default, the choice of backend is random.
|
select a backend `Pod`. By default, the choice of backend is random.
|
||||||
|
|
||||||
Obviously, iptables need not switch back between userspace and kernelspace, it should be
|
Obviously, iptables need not switch back between userspace and kernelspace, it should be
|
||||||
faster and more reliable than the userspace proxy. However, unlike the
|
faster and more reliable than the userspace proxy. However, unlike the
|
||||||
@@ -222,7 +222,7 @@ it's not installed kube-proxy will fall back to iptables proxy mode.
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
In any of proxy model, any traffic bound for the Service’s IP:Port is
|
In any of these proxy model, any traffic bound for the Service’s IP:Port is
|
||||||
proxied to an appropriate backend without the clients knowing anything
|
proxied to an appropriate backend without the clients knowing anything
|
||||||
about Kubernetes or Services or Pods. Client-IP based session affinity
|
about Kubernetes or Services or Pods. Client-IP based session affinity
|
||||||
can be selected by setting `service.spec.sessionAffinity` to "ClientIP"
|
can be selected by setting `service.spec.sessionAffinity` to "ClientIP"
|
||||||
@@ -600,6 +600,93 @@ annotation:
|
|||||||
Since version 1.3.0 the use of this annotation applies to all ports proxied by the ELB
|
Since version 1.3.0 the use of this annotation applies to all ports proxied by the ELB
|
||||||
and cannot be configured otherwise.
|
and cannot be configured otherwise.
|
||||||
|
|
||||||
|
#### ELB Access Logs on AWS
|
||||||
|
|
||||||
|
There are several annotations to manage access logs for ELB services on AWS.
|
||||||
|
|
||||||
|
The annotation `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled`
|
||||||
|
controls whether access logs are enabled.
|
||||||
|
|
||||||
|
The annotation `service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval`
|
||||||
|
controls the interval in minutes for publishing the access logs. You can specify
|
||||||
|
an interval of either 5 or 60.
|
||||||
|
|
||||||
|
The annotation `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name`
|
||||||
|
controls the name of the Amazon S3 bucket where load balancer access logs are
|
||||||
|
stored.
|
||||||
|
|
||||||
|
The annotation `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix`
|
||||||
|
specifies the logical hierarchy you created for your Amazon S3 bucket.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
metadata:
|
||||||
|
name: my-service
|
||||||
|
annotations:
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: "true"
|
||||||
|
# Specifies whether access logs are enabled for the load balancer
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-access-log-emit-interval: "60"
|
||||||
|
# The interval for publishing the access logs. You can specify an interval of either 5 or 60 (minutes).
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name: "my-bucket"
|
||||||
|
# The name of the Amazon S3 bucket where the access logs are stored
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix: "my-bucket-prefix/prod"
|
||||||
|
# The logical hierarchy you created for your Amazon S3 bucket, for example `my-bucket-prefix/prod`
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Connection Draining on AWS
|
||||||
|
|
||||||
|
Connection draining for Classic ELBs can be managed with the annotation
|
||||||
|
`service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled` set
|
||||||
|
to the value of `"true"`. The annotation
|
||||||
|
`service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout` can
|
||||||
|
also be used to set maximum time, in seconds, to keep the existing connections open before deregistering the instances.
|
||||||
|
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
metadata:
|
||||||
|
name: my-service
|
||||||
|
annotations:
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-connection-draining-enabled: "true"
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-connection-draining-timeout: "60"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Other ELB annotations
|
||||||
|
|
||||||
|
There are other annotations to manage Classic Elastic Load Balancers that are described below.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
metadata:
|
||||||
|
name: my-service
|
||||||
|
annotations:
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
|
||||||
|
# The time, in seconds, that the connection is allowed to be idle (no data has been sent over the connection) before it is closed by the load balancer
|
||||||
|
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
|
||||||
|
# Specifies whether cross-zone load balancing is enabled for the load balancer
|
||||||
|
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-additional-resource-tags: "environment=prod,owner=devops"
|
||||||
|
# A comma-separated list of key-value pairs which will be recorded as
|
||||||
|
# additional tags in the ELB.
|
||||||
|
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-healthcheck-healthy-threshold: ""
|
||||||
|
# The number of successive successful health checks required for a backend to
|
||||||
|
# be considered healthy for traffic. Defaults to 2, must be between 2 and 10
|
||||||
|
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-healthcheck-unhealthy-threshold: "3"
|
||||||
|
# The number of unsuccessful health checks required for a backend to be
|
||||||
|
# considered unhealthy for traffic. Defaults to 6, must be between 2 and 10
|
||||||
|
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval: "20"
|
||||||
|
# The approximate interval, in seconds, between health checks of an
|
||||||
|
# individual instance. Defaults to 10, must be between 5 and 300
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-healthcheck-timeout: "5"
|
||||||
|
# The amount of time, in seconds, during which no response means a failed
|
||||||
|
# health check. This value must be less than the service.beta.kubernetes.io/aws-load-balancer-healthcheck-interval
|
||||||
|
# value. Defaults to 5, must be between 2 and 60
|
||||||
|
|
||||||
|
service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: "sg-53fae93f,sg-42efd82e"
|
||||||
|
# A list of additional security groups to be added to ELB
|
||||||
|
```
|
||||||
|
|
||||||
#### Network Load Balancer support on AWS [alpha]
|
#### Network Load Balancer support on AWS [alpha]
|
||||||
|
|
||||||
**Warning:** This is an alpha feature and not recommended for production clusters yet.
|
**Warning:** This is an alpha feature and not recommended for production clusters yet.
|
||||||
@@ -615,7 +702,7 @@ with the value set to `nlb`.
|
|||||||
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
|
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
|
||||||
```
|
```
|
||||||
|
|
||||||
Unlike classic Elastic Load Balancers, Network Load Balancers (NLBs) forward the
|
Unlike Classic Elastic Load Balancers, Network Load Balancers (NLBs) forward the
|
||||||
client's IP through to the node. If a service's `spec.externalTrafficPolicy` is
|
client's IP through to the node. If a service's `spec.externalTrafficPolicy` is
|
||||||
set to `Cluster`, the client's IP address will not be propagated to the end
|
set to `Cluster`, the client's IP address will not be propagated to the end
|
||||||
pods.
|
pods.
|
||||||
|
|||||||
Reference in New Issue
Block a user