Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added IPV6 information to setup cluster using kubeadm #6465

Merged
merged 10 commits into from
Dec 11, 2017
17 changes: 14 additions & 3 deletions docs/reference/generated/kubeadm.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ following steps:
See [Securing your installation](#securing-more) for hardening.

1. kubeadm installs add-on components via the API server. Right now this is
the internal DNS server and the kube-proxy DaemonSet.
the internal DNS server and the kube-proxy DaemonSet. There is no requirement for specifying kube-proxy bind address in kubeadm.conf. The kube-proxy bind address is dynamically assigned based on the address type of API server (i.e. v4 will assign 0.0.0.0 & v6 will assign :: ).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

replace kubeadm.conf with the kubeadm configuration file

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

based on the address type of API server

do you mean the --bind-address of the API server? If so, can we explicit reference that

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The proxy address is determined based on the address type (IPv4 or IPv6) of the
--apiserver-advertise-address. However, this should not be mentioned b/c the kubeadm conf file is not used for managing the proxy config.


1. If `kubeadm init` is invoked with the alpha self-hosting feature enabled,
(`--feature-gates=SelfHosting=true`), the static Pod based control plane will
Expand Down Expand Up @@ -111,8 +111,8 @@ flags that can be used to customise the Kubernetes installation.
- `--apiserver-advertise-address`

This is the address the API Server will advertise to other members of the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace this entire paragraph (lines 113-116) with:

This is the address the API Server will advertise to other members of the cluster.  The API server IP address can either be IPv4 or IPv6. This is also the address used to construct the suggested `kubeadm join` line at the end of the init process.  If not set (or set to `0.0.0.0` for IPv4 or `::` for IPv6) then the IP for the default interface will be used.

So:

This is the address the API Server will advertise to other members of the cluster. The API server IP address can either be IPv4 or IPv6. This is also the address used to construct the suggested kubeadm join line at the end of the init process. If not set (or set to 0.0.0.0 for IPv4 or :: for IPv6) then the IP for the default interface will be used.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This replacement ☝️ includes @luxas's feedback.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mmueen Please add the requested syntax by copying and pasting the following section:

This is the address the API Server will advertise to other members of the cluster.  The API server IP address can either be IPv4 or IPv6. This is also the address used to construct the suggested `kubeadm join` line at the end of the init process.  If not set (or set to `0.0.0.0` for IPv4 or `::` for IPv6) then the IP for the default interface will be used.

cluster. This is also the address used to construct the suggested `kubeadm
join` line at the end of the init process. If not set (or set to 0.0.0.0) then
cluster. API server IP address can either be IPv4 or IPv6.This is also the address used to construct the suggested `kubeadm
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Space after period.

join` line at the end of the init process. If not set (or set to 0.0.0.0 for IPv4 or :: for IPv6) then
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe enclose 0.0.0.0 and :: in ``s?

IP for the default interface will be used.

This address is also added to the certificate that the API Server uses.
Expand Down Expand Up @@ -1020,8 +1020,19 @@ apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
apiServerExtraArgs:
feature-gates: APIResponseCompression=true
apiServerExtraArgs:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure IPv6 args should be placed in a default section. Can we create a new section called IPv6 configuration or something?

etcd-servers: "http://[fd00::101]:2379"
controllerManagerExtraArgs:
address: "fd00::101"
schedulerExtraArgs:
address: "fd00::101"
etcd:
extraArgs:
listen-client-urls: "http://[fd00::101]:2379"
```

Optionally, IPv6 for liveness probe for control plane components and etcd server can also be specified using extra args as mentioned in the example above. Please note that whenever IPv6 is specified as a tuple of IP:Port, IPv6 must be enclosed in square brackets.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the IPv6 hostname must be enclosed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"...whenever an IPv6 address is...IP:Port, the IPv6 address must be..."


To customise the scheduler or controller-manager, use `schedulerExtraArgs` and `controllerManagerExtraArgs` respectively.

More information on custom arguments can be found here:
Expand Down
9 changes: 5 additions & 4 deletions docs/setup/independent/create-cluster-kubeadm.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,9 +115,8 @@ something provider-specific. The tabs below will contain a notice about what fla
on `kubeadm init` are required.
- Unless otherwise specified, kubeadm uses the default gateway's network interface
to advertise the master's IP. If you want to use a different network interface, specify
`--apiserver-advertise-address=<ip-address>` argument to `kubeadm init`.
- If you would like to customise control plane components, you can do so by providing
extra args to each one, as documented [here](/docs/admin/kubeadm#custom-args).
`--apiserver-advertise-address=<ip-address>` argument to `kubeadm init`. To deploy an IPv6 Kubernetes cluster using IPv6 addressing, you must specify an IPv6 `--apiserver-advertise-address=<IPv6-address>`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please update this portion:

you must specify an IPv6 address --apiserver-advertise-address=<ipv6-address>

- If you would like to customise control plane components including optional IPv6 assignment to liveness probe for control plane components and etcd server, you can do so by providing extra args to each one, as documented [here](/docs/admin/kubeadm#custom-args).
- `kubeadm init` will first run a series of prechecks to ensure that the machine
is ready to run Kubernetes. It will expose warnings and exit on errors. It
will then download and install the cluster database and control plane
Expand Down Expand Up @@ -211,7 +210,7 @@ supports Container Network Interface (CNI) based networks (and does not support

Several projects provide Kubernetes pod networks using CNI, some of which also
support [Network Policy](/docs/concepts/services-networking/networkpolicies/). See the [add-ons
page](/docs/concepts/cluster-administration/addons/) for a complete list of available network add-ons.
page](/docs/concepts/cluster-administration/addons/) for a complete list of available network add-ons. IPv6 support was added in [CNI v0.6.0](https://github.com/containernetworking/cni/releases/tag/v0.6.0), so for IPv6 based network please use CNI version 0.6.0 or higher. [CNI bridge](https://github.com/containernetworking/plugins/blob/master/plugins/main/bridge/README.md) and [local-ipam](https://github.com/containernetworking/plugins/blob/master/plugins/ipam/host-local/README.md) are the only supported drivers in 1.9.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

substitute "supported drivers in 1.9" with "supported IPv6 network plugins in 1.9"

delete ", so for IPv6 based network please use CNI version 0.6.0 or higher"


**New for Kubernetes 1.6:** kubeadm 1.6 sets up a more secure cluster by
default. As such it uses RBAC to grant limited privileges to workloads running
Expand Down Expand Up @@ -371,6 +370,8 @@ The nodes are where your workloads (containers and pods, etc) run. To add new no
kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
```

**Note:** To specify IPv6 tuple for <master-ip>:<master-port>, IPv6 address must be enclosed in square brackets, for example `[fd00::101]:2073`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace with:

**Note:** To specify an IPv6 tuple for <master-ip>:<master-port>, IPv6 address must be enclosed in square brackets, for example: `[fd00::101]:2073`.
{: .note}


The output should look something like:

```
Expand Down