Kubeadm /docs/admin/kubeadm.md cleanup, editing. (#5681)
* Update docs/admin/kubeadm.md (mostly 1.8 related). This is Fabrizio's work, which I'm committing along with my edits (in a commit on top of this). * A few of my own edits to clarify and clean up some Markdown.
This commit is contained in:
+182
-53
@@ -14,7 +14,7 @@ This document provides information on how to use kubeadm's advanced options.
|
|||||||
* TOC
|
* TOC
|
||||||
{:toc}
|
{:toc}
|
||||||
|
|
||||||
Running `kubeadm init` bootstraps a Kubernetes cluster. This consists of the
|
Running `kubeadm init` bootstraps a Kubernetes master node. This consists of the
|
||||||
following steps:
|
following steps:
|
||||||
|
|
||||||
1. kubeadm runs a series of pre-flight checks to validate the system state
|
1. kubeadm runs a series of pre-flight checks to validate the system state
|
||||||
@@ -24,44 +24,72 @@ following steps:
|
|||||||
|
|
||||||
1. kubeadm generates a token that additional nodes can use to register
|
1. kubeadm generates a token that additional nodes can use to register
|
||||||
themselves with the master in future. Optionally, the user can provide a
|
themselves with the master in future. Optionally, the user can provide a
|
||||||
token.
|
token via `--token`, as described in the
|
||||||
|
[section on managing tokens](#manage-tokens) below.
|
||||||
|
|
||||||
1. kubeadm generates a self-signed CA to provision identities for each component
|
1. kubeadm generates a self-signed CA to provision identities for each component
|
||||||
(including nodes) in the cluster. It also generates client certificates to
|
(including nodes) in the cluster. It also generates client certificates to
|
||||||
be used by various components. If the user has provided their own CA by
|
be used by various components. If the user has provided their own CA by
|
||||||
dropping it in the cert directory (configured via `--cert-dir`, by default
|
dropping it in the cert directory configured via `--cert-dir`
|
||||||
`/etc/kubernetes/pki`), this step is skipped.
|
(`/etc/kubernetes/pki` by default) this step is skipped as described in the
|
||||||
|
[section on using custom certificates](#custom-certificates).
|
||||||
|
|
||||||
1. kubeadm outputs a kubeconfig file for the master's kubelet to use to connect
|
1. kubeadm writes kubeconfig files in `/etc/kubernetes/` for
|
||||||
to the API server, as well as an additional kubeconfig file for cluster
|
the kubelet, the controller-manager and the scheduler to use to connect to the
|
||||||
administrators.
|
API server, each one with their respective identities, as well as an additional
|
||||||
|
kubeconfig file for administration.
|
||||||
|
|
||||||
1. kubeadm generates Kubernetes static Pod manifests for the API server,
|
1. kubeadm generates static Pod manifests for the API server,
|
||||||
controller manager and scheduler. It places them in
|
controller manager and scheduler; in case an external etcd is not provided,
|
||||||
`/etc/kubernetes/manifests`. The kubelet watches this directory for Pods to
|
an additional static Pod manifest will be generated for etcd.
|
||||||
create on startup. These are the core components of Kubernetes. Once they are
|
|
||||||
up and running kubeadm can set up and manage any additional components.
|
|
||||||
|
|
||||||
1. kubeadm "taints" the master node so that only control plane components will
|
Static Pod manifests are written in `/etc/kubernetes/manifests`; the kubelet
|
||||||
run there. It also sets up the RBAC authorization system and writes a
|
watches this directory for Pods to create on startup, as described in
|
||||||
special ConfigMap that is used to bootstrap trust with the kubelets.
|
the [section about kubelet drop-in](#kubelet-drop-in).
|
||||||
|
|
||||||
|
Once control plane Pods are up and running kubeadm init sequence can continue.
|
||||||
|
|
||||||
|
1. kubeadm "labels" and "taints" the master node so that only control plane
|
||||||
|
components will run there.
|
||||||
|
|
||||||
|
1. Kubeadm makes all the necessary configurations for allowing node joining with the
|
||||||
|
[Bootstrap Tokens](https://kubernetes.io/docs/admin/bootstrap-tokens/) and
|
||||||
|
[TLS Bootstrap](https://kubernetes.io/docs/admin/kubelet-tls-bootstrapping/)
|
||||||
|
mechanism:
|
||||||
|
|
||||||
|
- Write a ConfigMap for making available all the information required
|
||||||
|
for joining and set up related RBAC access rules.
|
||||||
|
|
||||||
|
- Ensure access to the CSR signing API for bootstrap tokens.
|
||||||
|
|
||||||
|
- Configure auto approval for new CSR requests.
|
||||||
|
|
||||||
|
See [Securing your installation](#securing-more) for hardening.
|
||||||
|
|
||||||
1. kubeadm installs add-on components via the API server. Right now this is
|
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.
|
||||||
|
|
||||||
|
1. If `kubeadm init` is invoked with the alpha self-hosting feature enabled,
|
||||||
|
(`--feature-gates=SelfHosting=true`), the static Pod based control plane will
|
||||||
|
be transformed in a [self-hosed control plane](#self-hosting).
|
||||||
|
|
||||||
Running `kubeadm join` on each node in the cluster consists of the following
|
Running `kubeadm join` on each node in the cluster consists of the following
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
1. kubeadm downloads root CA information from the API server. By default, it
|
1. kubeadm downloads necessary cluster information from the API server.
|
||||||
uses the bootstrap token and the CA key hash to verify the authenticity of
|
By default, it uses the bootstrap token and the CA key hash to verify the
|
||||||
that data. The root CA can also be discovered directly via a file or URL.
|
authenticity of that data. The root CA can also be discovered directly via a
|
||||||
|
file or URL.
|
||||||
|
|
||||||
1. kubeadm creates a local key pair. It prepares a certificate signing request
|
1. Once the cluster information are known, kubelet can start the TLS bootstrapping
|
||||||
(CSR) and sends that off to the API server for signing. The bootstrap token
|
process (in v.1.7 this step was managed by kubeadm).
|
||||||
is used to authenticate. The control plane will sign this CSR requested
|
|
||||||
automatically.
|
|
||||||
|
|
||||||
1. kubeadm configures the local kubelet to connect to the API server.
|
The TLS bootstrap uses the shared token to temporarily authenticate
|
||||||
|
with the Kubernetes Master to submit a certificate signing request (CSR); by
|
||||||
|
default the control plane will sign this CSR request automatically.
|
||||||
|
|
||||||
|
1. Finally, kubeadm will configures the local kubelet to connect to the API
|
||||||
|
server with the definitive identity assigned to the node.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@@ -69,9 +97,8 @@ Fields that support multiple values do so either with comma separation, or by
|
|||||||
specifying the flag multiple times.
|
specifying the flag multiple times.
|
||||||
|
|
||||||
The kubeadm command line interface is currently in **beta**. We are aiming to
|
The kubeadm command line interface is currently in **beta**. We are aiming to
|
||||||
not break any scripted use of the main `kubeadm init` and `kubeadm join`. The
|
not break any scripted use of the main `kubeadm init` and `kubeadm join`.
|
||||||
single exception here is the format of the kubeadm config file as detailed
|
Exceptions to this are documented below.
|
||||||
below. That format is still considered alpha and may change.
|
|
||||||
|
|
||||||
### `kubeadm init`
|
### `kubeadm init`
|
||||||
|
|
||||||
@@ -116,18 +143,24 @@ flags that can be used to customise the Kubernetes installation.
|
|||||||
extended set of options including passing arbitrary command line flags to the
|
extended set of options including passing arbitrary command line flags to the
|
||||||
control plane components.
|
control plane components.
|
||||||
|
|
||||||
**Note**: When providing configuration values using _both_ a configuration file
|
**Note**: Since 1.8, other flags are not allowed alongside `--config` except
|
||||||
and flags, the file will take precedence. For example, if a file exists with:
|
for flags used to define kubeadm behaviour (not configuration) such as
|
||||||
|
`--skip-preflight-checks`.
|
||||||
|
|
||||||
```yaml
|
- `--dry-run`
|
||||||
apiVersion: kubeadm.k8s.io/v1alpha1
|
|
||||||
kind: MasterConfiguration
|
|
||||||
token: 1234
|
|
||||||
```
|
|
||||||
|
|
||||||
and the user ran `kubeadm init --config file.yaml --token 5678`,
|
This flag tells kubeadm to don't apply any changes; just output what would be done.
|
||||||
the chosen token value will be `1234`.
|
|
||||||
|
|
||||||
|
- `--feature-gates`
|
||||||
|
|
||||||
|
A set of key=value pairs that describe feature gates for alpha/experimental
|
||||||
|
features. Options are:
|
||||||
|
|
||||||
|
- SelfHosting=true|false (ALPHA - default=false)
|
||||||
|
|
||||||
|
- StoreCertsInSecrets=true|false (ALPHA - default=false)
|
||||||
|
|
||||||
|
See [self-hosted control plane](#self-hosting) for more detail.
|
||||||
|
|
||||||
- `--kubernetes-version` (default 'latest') the kubernetes version to initialise
|
- `--kubernetes-version` (default 'latest') the kubernetes version to initialise
|
||||||
|
|
||||||
@@ -138,6 +171,12 @@ flags that can be used to customise the Kubernetes installation.
|
|||||||
page](https://github.com/kubernetes/kubernetes/releases) for a full list of
|
page](https://github.com/kubernetes/kubernetes/releases) for a full list of
|
||||||
available versions.
|
available versions.
|
||||||
|
|
||||||
|
- `--node-name`
|
||||||
|
|
||||||
|
Allow to specify the node name, if something different than O.S. hostname should be used e.g. in case of Amazon EC2 instances.
|
||||||
|
|
||||||
|
The node-name is also added to the certificate that the API Server uses.
|
||||||
|
|
||||||
- `--pod-network-cidr`
|
- `--pod-network-cidr`
|
||||||
|
|
||||||
For certain networking solutions the Kubernetes master can also play a role in
|
For certain networking solutions the Kubernetes master can also play a role in
|
||||||
@@ -181,6 +220,11 @@ flags that can be used to customise the Kubernetes installation.
|
|||||||
before making any changes. Advanced users can use this flag to bypass these if
|
before making any changes. Advanced users can use this flag to bypass these if
|
||||||
necessary.
|
necessary.
|
||||||
|
|
||||||
|
- `--skip-token-print`
|
||||||
|
|
||||||
|
By default, kubeadm prints the token at the end of the init procedure. Advanced
|
||||||
|
users can use this flag to bypass these if necessary.
|
||||||
|
|
||||||
- `--token`
|
- `--token`
|
||||||
|
|
||||||
By default, `kubeadm init` automatically generates the token used to initialise
|
By default, `kubeadm init` automatically generates the token used to initialise
|
||||||
@@ -242,12 +286,6 @@ Here's an example on how to use it:
|
|||||||
|
|
||||||
Extended options are specified in the [kubeadm specific config file](#config-file).
|
Extended options are specified in the [kubeadm specific config file](#config-file).
|
||||||
|
|
||||||
- `--skip-preflight-checks`
|
|
||||||
|
|
||||||
By default, kubeadm runs a series of preflight checks to validate the system
|
|
||||||
before making any changes. Advanced users can use this flag to bypass these if
|
|
||||||
necessary.
|
|
||||||
|
|
||||||
- `--discovery-file`
|
- `--discovery-file`
|
||||||
|
|
||||||
A local file path or HTTPS URL. The file specified must be a kubeconfig file
|
A local file path or HTTPS URL. The file specified must be a kubeconfig file
|
||||||
@@ -301,6 +339,12 @@ Here's an example on how to use it:
|
|||||||
[security tradeoffs](#security-model) involved in skipping this verification
|
[security tradeoffs](#security-model) involved in skipping this verification
|
||||||
(which may or may not be appropriate in your environment).
|
(which may or may not be appropriate in your environment).
|
||||||
|
|
||||||
|
- `--node-name`
|
||||||
|
|
||||||
|
Specify the Node name. The default is to use the OS hostname. This is useful
|
||||||
|
on some cloud providers such as AWS. This name is also added to the node's
|
||||||
|
TLS certificate.
|
||||||
|
|
||||||
- `--tls-bootstrap-token`
|
- `--tls-bootstrap-token`
|
||||||
|
|
||||||
The token used to authenticate to the API server for the purposes of TLS
|
The token used to authenticate to the API server for the purposes of TLS
|
||||||
@@ -312,6 +356,47 @@ Here's an example on how to use it:
|
|||||||
`--tls-bootstrap-token`. This option specifies the same token for both. Other
|
`--tls-bootstrap-token`. This option specifies the same token for both. Other
|
||||||
flags override this flag if present.
|
flags override this flag if present.
|
||||||
|
|
||||||
|
- `--skip-preflight-checks`
|
||||||
|
|
||||||
|
By default, kubeadm runs a series of preflight checks to validate the system
|
||||||
|
before making any changes. Advanced users can use this flag to bypass these if
|
||||||
|
necessary.
|
||||||
|
|
||||||
|
### `kubeadm completion`
|
||||||
|
|
||||||
|
Output shell completion code for the specified shell (bash or zsh).
|
||||||
|
|
||||||
|
### `kubeadm config`
|
||||||
|
|
||||||
|
Kubeadm v1.8.0+ automatically creates a ConfigMap with all the parameters
|
||||||
|
used during `kubeadm init`.
|
||||||
|
|
||||||
|
If you initialized your cluster using kubeadm v1.7.x or lower, you must use
|
||||||
|
the `kubeadm config upload` command to create this ConfigMap in order
|
||||||
|
for `kubeadm upgrade` to be able to configure your upgraded cluster correctly.
|
||||||
|
|
||||||
|
### `kubeadm reset`
|
||||||
|
|
||||||
|
Reverts any changes made to this host by `kubeadm init` or `kubeadm join`.
|
||||||
|
|
||||||
|
### `kubeadm token`
|
||||||
|
|
||||||
|
Manage tokens on a running cluster. See [managing tokens](#manage-tokens) below
|
||||||
|
for further details.
|
||||||
|
|
||||||
|
### `kubeadm alpha phases`
|
||||||
|
|
||||||
|
**WARNING:** While kubeadm command line interface is in beta, commands under
|
||||||
|
this entry is still considered alpha and may change in future versions.
|
||||||
|
|
||||||
|
`kubeadm phase` introduces a set of kubeadm CLI commands allowing to invoke
|
||||||
|
individually each phase of the kubeadm init sequence; phases provide a reusable
|
||||||
|
and composable API/toolbox for building your own automated cluster installer.
|
||||||
|
|
||||||
|
**Options for `kubeadm phases`:**
|
||||||
|
|
||||||
|
Each kubeadm phase exposes a subset of relevant options from `kubeadm init`.
|
||||||
|
|
||||||
## Using kubeadm with a configuration file {#config-file}
|
## Using kubeadm with a configuration file {#config-file}
|
||||||
|
|
||||||
**WARNING:** While kubeadm command line interface is in beta, the config file is
|
**WARNING:** While kubeadm command line interface is in beta, the config file is
|
||||||
@@ -337,12 +422,18 @@ etcd:
|
|||||||
caFile: <path|string>
|
caFile: <path|string>
|
||||||
certFile: <path|string>
|
certFile: <path|string>
|
||||||
keyFile: <path|string>
|
keyFile: <path|string>
|
||||||
|
dataDir: <path|string>
|
||||||
|
extraArgs:
|
||||||
|
<argument>: <value|string>
|
||||||
|
<argument>: <value|string>
|
||||||
|
image: <string>
|
||||||
networking:
|
networking:
|
||||||
dnsDomain: <string>
|
dnsDomain: <string>
|
||||||
serviceSubnet: <cidr>
|
serviceSubnet: <cidr>
|
||||||
podSubnet: <cidr>
|
podSubnet: <cidr>
|
||||||
kubernetesVersion: <string>
|
kubernetesVersion: <string>
|
||||||
cloudProvider: <string>
|
cloudProvider: <string>
|
||||||
|
nodeName: <string>
|
||||||
authorizationModes:
|
authorizationModes:
|
||||||
- <authorizationMode1|string>
|
- <authorizationMode1|string>
|
||||||
- <authorizationMode2|string>
|
- <authorizationMode2|string>
|
||||||
@@ -362,6 +453,11 @@ apiServerCertSANs:
|
|||||||
- <name1|string>
|
- <name1|string>
|
||||||
- <name2|string>
|
- <name2|string>
|
||||||
certificatesDir: <string>
|
certificatesDir: <string>
|
||||||
|
imageRepository: <string>
|
||||||
|
unifiedControlPlaneImage: <string>
|
||||||
|
featureGates:
|
||||||
|
<feature>: <bool>
|
||||||
|
<feature>: <bool>
|
||||||
```
|
```
|
||||||
In addition, if authorizationMode is set to `ABAC`, you should write the config to `/etc/kubernetes/abac_policy.json`.
|
In addition, if authorizationMode is set to `ABAC`, you should write the config to `/etc/kubernetes/abac_policy.json`.
|
||||||
However, if authorizationMode is set to `Webhook`, you should write the config to `/etc/kubernetes/webhook_authz.conf`.
|
However, if authorizationMode is set to `Webhook`, you should write the config to `/etc/kubernetes/webhook_authz.conf`.
|
||||||
@@ -377,10 +473,16 @@ discoveryToken: <string>
|
|||||||
discoveryTokenAPIServers:
|
discoveryTokenAPIServers:
|
||||||
- <address|string>
|
- <address|string>
|
||||||
- <address|string>
|
- <address|string>
|
||||||
|
nodeName: <string>
|
||||||
tlsBootstrapToken: <string>
|
tlsBootstrapToken: <string>
|
||||||
|
token: <string>
|
||||||
|
discoveryTokenCACertHashes:
|
||||||
|
- <SHA-256 hash|string>
|
||||||
|
- <SHA-256 hash|string>
|
||||||
|
discoveryTokenUnsafeSkipCAVerification: <bool>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Securing your installation even more
|
## Securing your installation even more {#securing-more}
|
||||||
|
|
||||||
The defaults for kubeadm may not work for everyone. This section documents how to tighten up a kubeadm install
|
The defaults for kubeadm may not work for everyone. This section documents how to tighten up a kubeadm install
|
||||||
at the cost of some usability.
|
at the cost of some usability.
|
||||||
@@ -609,19 +711,26 @@ using kubeadm.
|
|||||||
|
|
||||||
## Use kubeadm with other CRI runtimes
|
## Use kubeadm with other CRI runtimes
|
||||||
|
|
||||||
Since [Kubernetes 1.6 release](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md#node-components-1), Kubernetes container runtimes have been transferred to using CRI by default. Currently, the build-in container runtime is Docker which is enabled by build-in `dockershim` in `kubelet`.
|
Since [Kubernetes 1.6 release](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md#node-components-1),
|
||||||
|
Kubernetes container runtimes have been transferred to using CRI by default.
|
||||||
|
Currently, the build-in container runtime is Docker which is enabled by built-in
|
||||||
|
`dockershim` in `kubelet`.
|
||||||
|
|
||||||
Using other CRI based runtimes with kubeadm is very simple, and currently supported runtimes are:
|
Using other CRI based runtimes with kubeadm is very simple, and currently
|
||||||
|
supported runtimes are:
|
||||||
|
|
||||||
- [cri-o](https://github.com/kubernetes-incubator/cri-o)
|
- [cri-o](https://github.com/kubernetes-incubator/cri-o)
|
||||||
- [frakti](https://github.com/kubernetes/frakti)
|
- [frakti](https://github.com/kubernetes/frakti)
|
||||||
- [rkt](https://github.com/kubernetes-incubator/rktlet)
|
- [rkt](https://github.com/kubernetes-incubator/rktlet)
|
||||||
|
|
||||||
After you have successfully installed `kubeadm` and `kubelet`, please follow these two steps:
|
After you have successfully installed `kubeadm` and `kubelet`, please follow
|
||||||
|
these two steps:
|
||||||
|
|
||||||
1. Install runtime shim on every node. You will need to follow the installation document in the runtime shim project listing above.
|
1. Install runtime shim on every node. You will need to follow the installation
|
||||||
|
document in the runtime shim project listing above.
|
||||||
|
|
||||||
2. Configure kubelet to use remote CRI runtime. Please remember to change `RUNTIME_ENDPOINT` to your own value like `/var/run/{your_runtime}.sock`:
|
1. Configure kubelet to use remote CRI runtime. Please remember to change
|
||||||
|
`RUNTIME_ENDPOINT` to your own value like `/var/run/{your_runtime}.sock`:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
$ cat > /etc/systemd/system/kubelet.service.d/20-cri.conf <<EOF
|
$ cat > /etc/systemd/system/kubelet.service.d/20-cri.conf <<EOF
|
||||||
@@ -630,7 +739,22 @@ EOF
|
|||||||
$ systemctl daemon-reload
|
$ systemctl daemon-reload
|
||||||
```
|
```
|
||||||
|
|
||||||
Now `kubelet` is ready to use the specified CRI runtime, and you can continue with `kubeadm init` and `kubeadm join` workflow to deploy Kubernetes cluster.
|
Now `kubelet` is ready to use the specified CRI runtime, and you can continue
|
||||||
|
with `kubeadm init` and `kubeadm join` workflow to deploy Kubernetes cluster.
|
||||||
|
|
||||||
|
## Using custom images {#custom-images}
|
||||||
|
|
||||||
|
By default, kubeadm will pull images from `gcr.io/google_containers`, unless
|
||||||
|
requested kubernetes version is a ci version; in this case
|
||||||
|
`gcr.io/kubernetes-ci-image` will be used.
|
||||||
|
|
||||||
|
This behaviour can be overridden by [using kubeadm with a configuration file](#config-file).
|
||||||
|
Allowed customization are:
|
||||||
|
- provide an alternative `imageRepository` to be used instead of
|
||||||
|
`gcr.io/google_containers` (NB. does not works for ci version)
|
||||||
|
- provide an `unifiedControlPlaneImage` to be used instead of single images
|
||||||
|
for control plane components
|
||||||
|
- provide an `etcd.image` name to be used
|
||||||
|
|
||||||
## Running kubeadm without an internet connection
|
## Running kubeadm without an internet connection
|
||||||
|
|
||||||
@@ -655,7 +779,7 @@ Here `v1.7.x` means the "latest patch release of the v1.7 branch".
|
|||||||
|
|
||||||
`${ARCH}` can be one of: `amd64`, `arm`, `arm64`, `ppc64le` or `s390x`.
|
`${ARCH}` can be one of: `amd64`, `arm`, `arm64`, `ppc64le` or `s390x`.
|
||||||
|
|
||||||
## Managing the kubeadm drop-in file for the kubelet
|
## Managing the kubeadm drop-in file for the kubelet {#kubelet-drop-in}
|
||||||
|
|
||||||
The kubeadm deb package ships with configuration for how the kubelet should
|
The kubeadm deb package ships with configuration for how the kubelet should
|
||||||
be run. Note that the `kubeadm` CLI command will never touch this drop-in file.
|
be run. Note that the `kubeadm` CLI command will never touch this drop-in file.
|
||||||
@@ -751,15 +875,15 @@ help to fully automate this process in the future.
|
|||||||
|
|
||||||
## Environment variables
|
## Environment variables
|
||||||
|
|
||||||
|
**Note:** These environment variables are deprecated and will stop functioning in v1.8!
|
||||||
|
|
||||||
There are some environment variables that modify the way that kubeadm works.
|
There are some environment variables that modify the way that kubeadm works.
|
||||||
Most users will have no need to set these. These environment variables are a
|
Most users will have no need to set these. These environment variables are a
|
||||||
short-term solution, eventually they will be integrated in the kubeadm
|
short-term solution, eventually they will be integrated in the kubeadm
|
||||||
configuration file.
|
configuration file.
|
||||||
|
|
||||||
**Note:** These environment variables are deprecated and will stop functioning in v1.8!
|
|
||||||
|
|
||||||
| Variable | Default | Description |
|
| Variable | Default | Description |
|
||||||
| --- | --- | --- |
|
| ---------------------- | --------------------------------------------- | ---------------------------------------- |
|
||||||
| `KUBE_KUBERNETES_DIR` | `/etc/kubernetes` | Where most configuration files are written to and read from |
|
| `KUBE_KUBERNETES_DIR` | `/etc/kubernetes` | Where most configuration files are written to and read from |
|
||||||
| `KUBE_HYPERKUBE_IMAGE` | | If set, use a single hyperkube image with this name. If not set, individual images per server component will be used. |
|
| `KUBE_HYPERKUBE_IMAGE` | | If set, use a single hyperkube image with this name. If not set, individual images per server component will be used. |
|
||||||
| `KUBE_ETCD_IMAGE` | `gcr.io/google_containers/etcd-<arch>:3.0.17` | The etcd container image to use. |
|
| `KUBE_ETCD_IMAGE` | `gcr.io/google_containers/etcd-<arch>:3.0.17` | The etcd container image to use. |
|
||||||
@@ -803,7 +927,7 @@ export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com,example.com,1
|
|||||||
Remember to change `proxy_ip` and add a kube master node IP address to
|
Remember to change `proxy_ip` and add a kube master node IP address to
|
||||||
`no_proxy`.
|
`no_proxy`.
|
||||||
|
|
||||||
## Using custom certificates
|
## Using custom certificates {#custom-certificates}
|
||||||
|
|
||||||
By default kubeadm will generate all the certificates needed for a cluster to run.
|
By default kubeadm will generate all the certificates needed for a cluster to run.
|
||||||
You can override this behaviour by providing your own certificates.
|
You can override this behaviour by providing your own certificates.
|
||||||
@@ -820,6 +944,11 @@ This means you can, for example, prepopulate `/etc/kubernetes/pki/ca.crt`
|
|||||||
and `/etc/kubernetes/pki/ca.key` with an existing CA, which then will be used
|
and `/etc/kubernetes/pki/ca.key` with an existing CA, which then will be used
|
||||||
for signing the rest of the certs.
|
for signing the rest of the certs.
|
||||||
|
|
||||||
|
Only for the CA, it is possible to provide the `ca.crt` file but not the `ca.key`
|
||||||
|
file; if all other certificates and kubeconfig files already are in place kubeadm
|
||||||
|
recognise this condition and activates the so called "ExternalCA" mode, which also
|
||||||
|
implies the csrsignercontroller in controller-manager won't be started.
|
||||||
|
|
||||||
## Self-hosting the Kubernetes control plane {#self-hosting}
|
## Self-hosting the Kubernetes control plane {#self-hosting}
|
||||||
As of 1.8, kubeadm can experimentally create a _self-hosted_ Kubernetes control
|
As of 1.8, kubeadm can experimentally create a _self-hosted_ Kubernetes control
|
||||||
plane. This means that key components such as the API server, controller
|
plane. This means that key components such as the API server, controller
|
||||||
|
|||||||
Reference in New Issue
Block a user