Deckhouse Platform in existing cluster

Select the Deckhouse Platform edition

  • Community Edition
  • Basic Edition
  • Standard Edition
  • Standard Edition+
  • Enterprise Edition

The recommended settings for a Deckhouse Platform Community Edition installation are generated below:

  • config.yml — a file with the configuration needed to bootstrap the cluster. Contains the installer parameters, and the initial cluster parameters.

Pay attention to:

  • highlighted parameters you must define.
  • parameters you might want to change.
  • Read the If something went wrong section first: it may already describe the case of your provider. Refer to it if you have any problems during the installation process.

Create the config.yml file.

# Deckhouse module settings.
# https://deckhouse.io/modules/deckhouse/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    bundle: Minimal
    # Deckhouse release channel. The Early Access channel is stable enough to be used in production environments.
    # If you have several clusters, set different release channels on them.
    # More info: https://deckhouse.io/products/kubernetes-platform/documentation/v1/reference/release-channels.html
    releaseChannel: EarlyAccess
    logLevel: Info
---
# Global Deckhouse settings.
# https://deckhouse.io/products/kubernetes-platform/documentation/v1/reference/api/global.html#parameters
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  version: 2
  settings:
    modules:
      # Template that will be used for system apps domains within the cluster.
      # E.g., Grafana for %s.example.com will be available as 'grafana.example.com'.
      # The domain MUST NOT match the one specified in the clusterDomain parameter of the ClusterConfiguration resource.
      # You can change it to your own or follow the steps in the guide and change it after installation.
      publicDomainTemplate: "%s.example.com"
      # If necessary, specify in the customTolerationKeys array
      # all the taints to which Deckhouse Platform should have tolerations.
      # The following is an example for the case if you need Deckhouse Platform and its components to be able
      # to run on nodes that have the SystemLoad taint.
      # You might consider changing this.
      placement:
        customTolerationKeys:
        - SystemLoad
---
# cert-manager module settings.
# https://deckhouse.io/modules/cert-manager/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: cert-manager
spec:
  version: 1
  enabled: true
---
# documentation module settings.
# https://deckhouse.io/modules/documentation/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: documentation
spec:
  version: 1
  enabled: true

About nodeSelector, taints and tolerations...

You can control which nodes the Deckhouse controller runs on by using the spec.settings.nodeSelector parameter of the deckhouse ModuleConfig in the installation configuration.

Example of specifying nodeSelector in the deckhouse ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    nodeSelector:
      node-role.kubernetes.io/control-plane: ""

Also, you can list the necessary cluster node taints in the global ModuleConfig in the .spec.settings.modules.placement.customTolerationKeys array so that Deckhouse automatically adds the corresponding tolerations to its components.

Example of specifying the list of taints in the customTolerationKeys array of the global ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  settings:
    modules:
      placement:
        customTolerationKeys:
        - SystemLoad
        - kubernetes.io/instance

Enter license key

Enter

Have no key?

The recommended settings for a Deckhouse Platform Basic Edition installation are generated below:

  • config.yml — a file with the configuration needed to bootstrap the cluster. Contains the installer parameters, and the initial cluster parameters.

Pay attention to:

  • highlighted parameters you must define.
  • parameters you might want to change.
  • Read the If something went wrong section first: it may already describe the case of your provider. Refer to it if you have any problems during the installation process.

Create the config.yml file.

# Deckhouse module settings.
# https://deckhouse.io/modules/deckhouse/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    bundle: Minimal
    releaseChannel: Stable
    logLevel: Info
    # Settings for accessing the container registry with Deckhouse images.
    registry:
      mode: Unmanaged
      unmanaged:
        imagesRepo: registry.deckhouse.io/deckhouse/<REVISION>
        license: <YOUR_ACCESS_STRING_IS_HERE>
---
# Global Deckhouse settings.
# https://deckhouse.io/products/kubernetes-platform/documentation/v1/reference/api/global.html#parameters
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  version: 2
  settings:
    modules:
      # Template that will be used for system apps domains within the cluster.
      # E.g., Grafana for %s.example.com will be available as 'grafana.example.com'.
      # The domain MUST NOT match the one specified in the clusterDomain parameter of the ClusterConfiguration resource.
      # You can change it to your own or follow the steps in the guide and change it after installation.
      publicDomainTemplate: "%s.example.com"
      # If necessary, specify in the customTolerationKeys array
      # all the taints to which Deckhouse Platform should have tolerations.
      # The following is an example for the case if you need Deckhouse Platform and its components to be able
      # to run on nodes that have the SystemLoad taint.
      # You might consider changing this.
      placement:
        customTolerationKeys:
        - SystemLoad
---
# cert-manager module settings.
# https://deckhouse.io/modules/cert-manager/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: cert-manager
spec:
  version: 1
  enabled: true
---
# documentation module settings.
# https://deckhouse.io/modules/documentation/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: documentation
spec:
  version: 1
  enabled: true

About nodeSelector, taints and tolerations...

You can control which nodes the Deckhouse controller runs on by using the spec.settings.nodeSelector parameter of the deckhouse ModuleConfig in the installation configuration.

Example of specifying nodeSelector in the deckhouse ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    nodeSelector:
      node-role.kubernetes.io/control-plane: ""

Also, you can list the necessary cluster node taints in the global ModuleConfig in the .spec.settings.modules.placement.customTolerationKeys array so that Deckhouse automatically adds the corresponding tolerations to its components.

Example of specifying the list of taints in the customTolerationKeys array of the global ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  settings:
    modules:
      placement:
        customTolerationKeys:
        - SystemLoad
        - kubernetes.io/instance

Enter license key

Enter

Have no key?

The recommended settings for a Deckhouse Platform Standard Edition installation are generated below:

  • config.yml — a file with the configuration needed to bootstrap the cluster. Contains the installer parameters, and the initial cluster parameters.

Pay attention to:

  • highlighted parameters you must define.
  • parameters you might want to change.
  • Read the If something went wrong section first: it may already describe the case of your provider. Refer to it if you have any problems during the installation process.

Create the config.yml file.

# Deckhouse module settings.
# https://deckhouse.io/modules/deckhouse/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    bundle: Minimal
    releaseChannel: Stable
    logLevel: Info
    # Settings for accessing the container registry with Deckhouse images.
    registry:
      mode: Unmanaged
      unmanaged:
        imagesRepo: registry.deckhouse.io/deckhouse/<REVISION>
        license: <YOUR_ACCESS_STRING_IS_HERE>
---
# Global Deckhouse settings.
# https://deckhouse.io/products/kubernetes-platform/documentation/v1/reference/api/global.html#parameters
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  version: 2
  settings:
    modules:
      # Template that will be used for system apps domains within the cluster.
      # E.g., Grafana for %s.example.com will be available as 'grafana.example.com'.
      # The domain MUST NOT match the one specified in the clusterDomain parameter of the ClusterConfiguration resource.
      # You can change it to your own or follow the steps in the guide and change it after installation.
      publicDomainTemplate: "%s.example.com"
      # If necessary, specify in the customTolerationKeys array
      # all the taints to which Deckhouse Platform should have tolerations.
      # The following is an example for the case if you need Deckhouse Platform and its components to be able
      # to run on nodes that have the SystemLoad taint.
      # You might consider changing this.
      placement:
        customTolerationKeys:
        - SystemLoad
---
# cert-manager module settings.
# https://deckhouse.io/modules/cert-manager/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: cert-manager
spec:
  version: 1
  enabled: true
---
# documentation module settings.
# https://deckhouse.io/modules/documentation/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: documentation
spec:
  version: 1
  enabled: true

About nodeSelector, taints and tolerations...

You can control which nodes the Deckhouse controller runs on by using the spec.settings.nodeSelector parameter of the deckhouse ModuleConfig in the installation configuration.

Example of specifying nodeSelector in the deckhouse ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    nodeSelector:
      node-role.kubernetes.io/control-plane: ""

Also, you can list the necessary cluster node taints in the global ModuleConfig in the .spec.settings.modules.placement.customTolerationKeys array so that Deckhouse automatically adds the corresponding tolerations to its components.

Example of specifying the list of taints in the customTolerationKeys array of the global ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  settings:
    modules:
      placement:
        customTolerationKeys:
        - SystemLoad
        - kubernetes.io/instance

Enter license key

Enter

Have no key?

The recommended settings for a Deckhouse Platform Standard Edition+ installation are generated below:

  • config.yml — a file with the configuration needed to bootstrap the cluster. Contains the installer parameters, and the initial cluster parameters.

Pay attention to:

  • highlighted parameters you must define.
  • parameters you might want to change.
  • Read the If something went wrong section first: it may already describe the case of your provider. Refer to it if you have any problems during the installation process.

Create the config.yml file.

# Deckhouse module settings.
# https://deckhouse.io/modules/deckhouse/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    bundle: Minimal
    releaseChannel: Stable
    logLevel: Info
    # Settings for accessing the container registry with Deckhouse images.
    registry:
      mode: Unmanaged
      unmanaged:
        imagesRepo: registry.deckhouse.io/deckhouse/<REVISION>
        license: <YOUR_ACCESS_STRING_IS_HERE>
---
# Global Deckhouse settings.
# https://deckhouse.io/products/kubernetes-platform/documentation/v1/reference/api/global.html#parameters
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  version: 2
  settings:
    modules:
      # Template that will be used for system apps domains within the cluster.
      # E.g., Grafana for %s.example.com will be available as 'grafana.example.com'.
      # The domain MUST NOT match the one specified in the clusterDomain parameter of the ClusterConfiguration resource.
      # You can change it to your own or follow the steps in the guide and change it after installation.
      publicDomainTemplate: "%s.example.com"
      # If necessary, specify in the customTolerationKeys array
      # all the taints to which Deckhouse Platform should have tolerations.
      # The following is an example for the case if you need Deckhouse Platform and its components to be able
      # to run on nodes that have the SystemLoad taint.
      # You might consider changing this.
      placement:
        customTolerationKeys:
        - SystemLoad
---
# cert-manager module settings.
# https://deckhouse.io/modules/cert-manager/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: cert-manager
spec:
  version: 1
  enabled: true
---
# documentation module settings.
# https://deckhouse.io/modules/documentation/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: documentation
spec:
  version: 1
  enabled: true

About nodeSelector, taints and tolerations...

You can control which nodes the Deckhouse controller runs on by using the spec.settings.nodeSelector parameter of the deckhouse ModuleConfig in the installation configuration.

Example of specifying nodeSelector in the deckhouse ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    nodeSelector:
      node-role.kubernetes.io/control-plane: ""

Also, you can list the necessary cluster node taints in the global ModuleConfig in the .spec.settings.modules.placement.customTolerationKeys array so that Deckhouse automatically adds the corresponding tolerations to its components.

Example of specifying the list of taints in the customTolerationKeys array of the global ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  settings:
    modules:
      placement:
        customTolerationKeys:
        - SystemLoad
        - kubernetes.io/instance

Enter license key

Enter

Have no key?

The recommended settings for a Deckhouse Platform Enterprise Edition installation are generated below:

  • config.yml — a file with the configuration needed to bootstrap the cluster. Contains the installer parameters, and the initial cluster parameters.

Pay attention to:

  • highlighted parameters you must define.
  • parameters you might want to change.
  • Read the If something went wrong section first: it may already describe the case of your provider. Refer to it if you have any problems during the installation process.

Create the config.yml file.

# Deckhouse module settings.
# https://deckhouse.io/modules/deckhouse/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    bundle: Minimal
    releaseChannel: Stable
    logLevel: Info
    # Settings for accessing the container registry with Deckhouse images.
    registry:
      mode: Unmanaged
      unmanaged:
        imagesRepo: registry.deckhouse.io/deckhouse/<REVISION>
        license: <YOUR_ACCESS_STRING_IS_HERE>
---
# Global Deckhouse settings.
# https://deckhouse.io/products/kubernetes-platform/documentation/v1/reference/api/global.html#parameters
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  version: 2
  settings:
    modules:
      # Template that will be used for system apps domains within the cluster.
      # E.g., Grafana for %s.example.com will be available as 'grafana.example.com'.
      # The domain MUST NOT match the one specified in the clusterDomain parameter of the ClusterConfiguration resource.
      # You can change it to your own or follow the steps in the guide and change it after installation.
      publicDomainTemplate: "%s.example.com"
      # If necessary, specify in the customTolerationKeys array
      # all the taints to which Deckhouse Platform should have tolerations.
      # The following is an example for the case if you need Deckhouse Platform and its components to be able
      # to run on nodes that have the SystemLoad taint.
      # You might consider changing this.
      placement:
        customTolerationKeys:
        - SystemLoad
---
# cert-manager module settings.
# https://deckhouse.io/modules/cert-manager/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: cert-manager
spec:
  version: 1
  enabled: true
---
# documentation module settings.
# https://deckhouse.io/modules/documentation/configuration.html
apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: documentation
spec:
  version: 1
  enabled: true

About nodeSelector, taints and tolerations...

You can control which nodes the Deckhouse controller runs on by using the spec.settings.nodeSelector parameter of the deckhouse ModuleConfig in the installation configuration.

Example of specifying nodeSelector in the deckhouse ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: deckhouse
spec:
  version: 1
  enabled: true
  settings:
    nodeSelector:
      node-role.kubernetes.io/control-plane: ""

Also, you can list the necessary cluster node taints in the global ModuleConfig in the .spec.settings.modules.placement.customTolerationKeys array so that Deckhouse automatically adds the corresponding tolerations to its components.

Example of specifying the list of taints in the customTolerationKeys array of the global ModuleConfig (do not copy this example to your configuration without changes, because you will have other values):

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: global
spec:
  settings:
    modules:
      placement:
        customTolerationKeys:
        - SystemLoad
        - kubernetes.io/instance

Use a container image to install the Deckhouse Platform. It is necessary to transfer configuration file to the container.

Run the installer on the personal computer.

  • Linux / macOS
  • Windows

If, with VPN enabled, the container with the installer cannot access the network, follow the instructions in the FAQ.

docker run --pull=always -it -v "$PWD/config.yml:/config.yml" \
  -v "$HOME/.kube/config:/kubeconfig" registry.deckhouse.io/deckhouse/ce/install:early-access bash
docker run --pull=always -it -v "%cd%\config.yml:/config.yml" -v "%userprofile%\.kube\config:/kubeconfig"  registry.deckhouse.io/deckhouse/ce/install:early-access bash -c "chmod 400 /tmp/.ssh/<SSH_PRIVATE_KEY_FILE>; bash"

Notes:

  • The kubectl configuration file with access to the Kubernetes API must be mounted as the /kubeconfig file in the container. The guide assumes that it is the .kube/config file in the user’s home directory.

Now, to initiate the process of installation, you need to execute inside the container:

dhctl bootstrap-phase install-deckhouse --kubeconfig=/kubeconfig --config=/config.yml

The installation process may take from 5 to 30 minutes, depending on the connection.

After the installation is complete, the installer will output the IP of the master node (you will need it further). Example output:

...
┌ 🎈 ~ Common: Kubernetes Master Node addresses for SSH
│ cloud-demo-master-0 | ssh ubuntu@1.2.3.4
└ 🎈 ~ Common: Kubernetes Master Node addresses for SSH (0.00 seconds)

Almost everything is ready for a fully-fledged Deckhouse Platform to work.

If something went wrong

Some providers’ clusters may require extra steps before or after installing Deckhouse Platform.

Here are some common problems and ways to solve them. If you run into other difficulties installing Deckhouse Platform in an existing cluster, describe them in an issue on GitHub.

Installation errors at the 'Waiting for Deckhouse to become Ready' step

  • Error of the following kind:

    │ │ ┌ Waiting for Deckhouse to become Ready
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    

    Probably, there is no node in the cluster with the node-role.kubernetes.io/control-plane: "" label which is originally used in the nodeSelector of the deckhouse deployment manifest.

    Ways to fix the error:

    • Insert the proper nodeSelector into the deckhouse deployment:
      kubectl -n d8-system edit deployment/deckhouse
      
    • Delete nodeSelector in the deckhouse deployment:
      kubectl patch -n d8-system deployment deckhouse --type json -p '[{"op": "remove", "path": "/spec/template/spec/nodeSelector"}]'
      
  • Error of the following kind:

    Waiting for Deckhouse Platform to become Ready
    │ │ Deckhouse pod found: deckhouse-7cc8b6f4bd-9l99t (Running)
    │ │ Running pod found! Checking logs...
    │ │ Request failed. Probably pod was restarted during installation.
    │ │ No Deckhouse pod found.
    

    And also an error with the status appears in the deckhouse module:

    Status:   ModuleError: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "heritage-label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first]
    

    May be, the kube-apiserver.yaml static manifest does not specify `runtime-config’.

    Add the spec.containers.command parameter to /etc/kubernetes/manifests/kube-api server.yaml value- –runtime-config=admissionregistration.k8s.io/v1beta1=true,admissionregistration.k8s.io/v1alpha1=true`.

    Caution. kube-apiserver may not respond to requests for a while.

Error in case of Deckhouse Platform installation after interruption

If the Deckhouse installation was interrupted for unknown reasons, the following error may be displayed during the re-installation:

  ┌ ⛵ ~ Bootstrap: Install Deckhouse
  └ ⛵ ~ Bootstrap: Install Deckhouse (43.50 seconds) FAILED

  Timeout while "Check prevent break another bootstrapped": last error: Cluster UUID's not equal in the cluster                              ↵
  (7489d07a-5fbb-4269-ba0d-e0340ce4f118) and in the cache ().
  Probably you are trying bootstrap cluster on node with previous created cluster.
  Please check hostname.

To reinstall Deckhouse Platform on the cluster, you need to delete the following ConfigMaps in the kube-system namespace:

  d8-cluster-is-bootstraped
  d8-cluster-uuid

and then start the installation again.

Use a container image to install the Deckhouse Platform. It is necessary to transfer configuration file to the container.

Run the installer on the personal computer.

  • Linux / macOS
  • Windows

Log in on the personal computer to the container image registry:

echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.io

Run a container with the installer:

If, with VPN enabled, the container with the installer cannot access the network, follow the instructions in the FAQ.

docker run --pull=always -it -v "$PWD/config.yml:/config.yml" \
  -v "$HOME/.kube/config:/kubeconfig" registry.deckhouse.io/deckhouse/be/install:stable bash

Log in on the personal computer to the container image registry by providing the license key as a password:

docker login -u license-token registry.deckhouse.io

Run a container with the installer:

docker run --pull=always -it -v "%cd%\config.yml:/config.yml" -v "%userprofile%\.kube\config:/kubeconfig" registry.deckhouse.io/deckhouse/be/install:stable bash -c "chmod 400 /tmp/.ssh/<SSH_PRIVATE_KEY_FILE>; bash"

Notes:

  • The kubectl configuration file with access to the Kubernetes API must be mounted as the /kubeconfig file in the container. The guide assumes that it is the .kube/config file in the user’s home directory.

Now, to initiate the process of installation, you need to execute inside the container:

dhctl bootstrap-phase install-deckhouse --kubeconfig=/kubeconfig --config=/config.yml

The installation process may take from 5 to 30 minutes, depending on the connection.

After the installation is complete, the installer will output the IP of the master node (you will need it further). Example output:

...
┌ 🎈 ~ Common: Kubernetes Master Node addresses for SSH
│ cloud-demo-master-0 | ssh ubuntu@1.2.3.4
└ 🎈 ~ Common: Kubernetes Master Node addresses for SSH (0.00 seconds)

Almost everything is ready for a fully-fledged Deckhouse Platform to work.

If something went wrong

Some providers’ clusters may require extra steps before or after installing Deckhouse Platform.

Here are some common problems and ways to solve them. If you run into other difficulties installing Deckhouse Platform in an existing cluster, describe them in an issue on GitHub.

Installation errors at the 'Waiting for Deckhouse to become Ready' step

  • Error of the following kind:

    │ │ ┌ Waiting for Deckhouse to become Ready
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    

    Probably, there is no node in the cluster with the node-role.kubernetes.io/control-plane: "" label which is originally used in the nodeSelector of the deckhouse deployment manifest.

    Ways to fix the error:

    • Insert the proper nodeSelector into the deckhouse deployment:
      kubectl -n d8-system edit deployment/deckhouse
      
    • Delete nodeSelector in the deckhouse deployment:
      kubectl patch -n d8-system deployment deckhouse --type json -p '[{"op": "remove", "path": "/spec/template/spec/nodeSelector"}]'
      
  • Error of the following kind:

    Waiting for Deckhouse Platform to become Ready
    │ │ Deckhouse pod found: deckhouse-7cc8b6f4bd-9l99t (Running)
    │ │ Running pod found! Checking logs...
    │ │ Request failed. Probably pod was restarted during installation.
    │ │ No Deckhouse pod found.
    

    And also an error with the status appears in the deckhouse module:

    Status:   ModuleError: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "heritage-label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first]
    

    May be, the kube-apiserver.yaml static manifest does not specify `runtime-config’.

    Add the spec.containers.command parameter to /etc/kubernetes/manifests/kube-api server.yaml value- –runtime-config=admissionregistration.k8s.io/v1beta1=true,admissionregistration.k8s.io/v1alpha1=true`.

    Caution. kube-apiserver may not respond to requests for a while.

Error in case of Deckhouse Platform installation after interruption

If the Deckhouse installation was interrupted for unknown reasons, the following error may be displayed during the re-installation:

  ┌ ⛵ ~ Bootstrap: Install Deckhouse
  └ ⛵ ~ Bootstrap: Install Deckhouse (43.50 seconds) FAILED

  Timeout while "Check prevent break another bootstrapped": last error: Cluster UUID's not equal in the cluster                              ↵
  (7489d07a-5fbb-4269-ba0d-e0340ce4f118) and in the cache ().
  Probably you are trying bootstrap cluster on node with previous created cluster.
  Please check hostname.

To reinstall Deckhouse Platform on the cluster, you need to delete the following ConfigMaps in the kube-system namespace:

  d8-cluster-is-bootstraped
  d8-cluster-uuid

and then start the installation again.

Use a container image to install the Deckhouse Platform. It is necessary to transfer configuration file to the container.

Run the installer on the personal computer.

  • Linux / macOS
  • Windows

Log in on the personal computer to the container image registry:

echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.io

Run a container with the installer:

If, with VPN enabled, the container with the installer cannot access the network, follow the instructions in the FAQ.

docker run --pull=always -it -v "$PWD/config.yml:/config.yml" \
  -v "$HOME/.kube/config:/kubeconfig" registry.deckhouse.io/deckhouse/se/install:stable bash

Log in on the personal computer to the container image registry by providing the license key as a password:

docker login -u license-token registry.deckhouse.io

Run a container with the installer:

docker run --pull=always -it -v "%cd%\config.yml:/config.yml" -v "%userprofile%\.kube\config:/kubeconfig" registry.deckhouse.io/deckhouse/se/install:stable bash -c "chmod 400 /tmp/.ssh/<SSH_PRIVATE_KEY_FILE>; bash"

Notes:

  • The kubectl configuration file with access to the Kubernetes API must be mounted as the /kubeconfig file in the container. The guide assumes that it is the .kube/config file in the user’s home directory.

Now, to initiate the process of installation, you need to execute inside the container:

dhctl bootstrap-phase install-deckhouse --kubeconfig=/kubeconfig --config=/config.yml

The installation process may take from 5 to 30 minutes, depending on the connection.

After the installation is complete, the installer will output the IP of the master node (you will need it further). Example output:

...
┌ 🎈 ~ Common: Kubernetes Master Node addresses for SSH
│ cloud-demo-master-0 | ssh ubuntu@1.2.3.4
└ 🎈 ~ Common: Kubernetes Master Node addresses for SSH (0.00 seconds)

Almost everything is ready for a fully-fledged Deckhouse Platform to work.

If something went wrong

Some providers’ clusters may require extra steps before or after installing Deckhouse Platform.

Here are some common problems and ways to solve them. If you run into other difficulties installing Deckhouse Platform in an existing cluster, describe them in an issue on GitHub.

Installation errors at the 'Waiting for Deckhouse to become Ready' step

  • Error of the following kind:

    │ │ ┌ Waiting for Deckhouse to become Ready
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    

    Probably, there is no node in the cluster with the node-role.kubernetes.io/control-plane: "" label which is originally used in the nodeSelector of the deckhouse deployment manifest.

    Ways to fix the error:

    • Insert the proper nodeSelector into the deckhouse deployment:
      kubectl -n d8-system edit deployment/deckhouse
      
    • Delete nodeSelector in the deckhouse deployment:
      kubectl patch -n d8-system deployment deckhouse --type json -p '[{"op": "remove", "path": "/spec/template/spec/nodeSelector"}]'
      
  • Error of the following kind:

    Waiting for Deckhouse Platform to become Ready
    │ │ Deckhouse pod found: deckhouse-7cc8b6f4bd-9l99t (Running)
    │ │ Running pod found! Checking logs...
    │ │ Request failed. Probably pod was restarted during installation.
    │ │ No Deckhouse pod found.
    

    And also an error with the status appears in the deckhouse module:

    Status:   ModuleError: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "heritage-label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first]
    

    May be, the kube-apiserver.yaml static manifest does not specify `runtime-config’.

    Add the spec.containers.command parameter to /etc/kubernetes/manifests/kube-api server.yaml value- –runtime-config=admissionregistration.k8s.io/v1beta1=true,admissionregistration.k8s.io/v1alpha1=true`.

    Caution. kube-apiserver may not respond to requests for a while.

Error in case of Deckhouse Platform installation after interruption

If the Deckhouse installation was interrupted for unknown reasons, the following error may be displayed during the re-installation:

  ┌ ⛵ ~ Bootstrap: Install Deckhouse
  └ ⛵ ~ Bootstrap: Install Deckhouse (43.50 seconds) FAILED

  Timeout while "Check prevent break another bootstrapped": last error: Cluster UUID's not equal in the cluster                              ↵
  (7489d07a-5fbb-4269-ba0d-e0340ce4f118) and in the cache ().
  Probably you are trying bootstrap cluster on node with previous created cluster.
  Please check hostname.

To reinstall Deckhouse Platform on the cluster, you need to delete the following ConfigMaps in the kube-system namespace:

  d8-cluster-is-bootstraped
  d8-cluster-uuid

and then start the installation again.

Use a container image to install the Deckhouse Platform. It is necessary to transfer configuration file to the container.

Run the installer on the personal computer.

  • Linux / macOS
  • Windows

Log in on the personal computer to the container image registry:

echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.io

Run a container with the installer:

If, with VPN enabled, the container with the installer cannot access the network, follow the instructions in the FAQ.

docker run --pull=always -it -v "$PWD/config.yml:/config.yml" \
  -v "$HOME/.kube/config:/kubeconfig" registry.deckhouse.io/deckhouse/se-plus/install:stable bash

Log in on the personal computer to the container image registry by providing the license key as a password:

docker login -u license-token registry.deckhouse.io

Run a container with the installer:

docker run --pull=always -it -v "%cd%\config.yml:/config.yml" -v "%userprofile%\.kube\config:/kubeconfig" registry.deckhouse.io/deckhouse/se-plus/install:stable bash -c "chmod 400 /tmp/.ssh/<SSH_PRIVATE_KEY_FILE>; bash"

Notes:

  • The kubectl configuration file with access to the Kubernetes API must be mounted as the /kubeconfig file in the container. The guide assumes that it is the .kube/config file in the user’s home directory.

Now, to initiate the process of installation, you need to execute inside the container:

dhctl bootstrap-phase install-deckhouse --kubeconfig=/kubeconfig --config=/config.yml

The installation process may take from 5 to 30 minutes, depending on the connection.

After the installation is complete, the installer will output the IP of the master node (you will need it further). Example output:

...
┌ 🎈 ~ Common: Kubernetes Master Node addresses for SSH
│ cloud-demo-master-0 | ssh ubuntu@1.2.3.4
└ 🎈 ~ Common: Kubernetes Master Node addresses for SSH (0.00 seconds)

Almost everything is ready for a fully-fledged Deckhouse Platform to work.

If something went wrong

Some providers’ clusters may require extra steps before or after installing Deckhouse Platform.

Here are some common problems and ways to solve them. If you run into other difficulties installing Deckhouse Platform in an existing cluster, describe them in an issue on GitHub.

Installation errors at the 'Waiting for Deckhouse to become Ready' step

  • Error of the following kind:

    │ │ ┌ Waiting for Deckhouse to become Ready
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    

    Probably, there is no node in the cluster with the node-role.kubernetes.io/control-plane: "" label which is originally used in the nodeSelector of the deckhouse deployment manifest.

    Ways to fix the error:

    • Insert the proper nodeSelector into the deckhouse deployment:
      kubectl -n d8-system edit deployment/deckhouse
      
    • Delete nodeSelector in the deckhouse deployment:
      kubectl patch -n d8-system deployment deckhouse --type json -p '[{"op": "remove", "path": "/spec/template/spec/nodeSelector"}]'
      
  • Error of the following kind:

    Waiting for Deckhouse Platform to become Ready
    │ │ Deckhouse pod found: deckhouse-7cc8b6f4bd-9l99t (Running)
    │ │ Running pod found! Checking logs...
    │ │ Request failed. Probably pod was restarted during installation.
    │ │ No Deckhouse pod found.
    

    And also an error with the status appears in the deckhouse module:

    Status:   ModuleError: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "heritage-label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first]
    

    May be, the kube-apiserver.yaml static manifest does not specify `runtime-config’.

    Add the spec.containers.command parameter to /etc/kubernetes/manifests/kube-api server.yaml value- –runtime-config=admissionregistration.k8s.io/v1beta1=true,admissionregistration.k8s.io/v1alpha1=true`.

    Caution. kube-apiserver may not respond to requests for a while.

Error in case of Deckhouse Platform installation after interruption

If the Deckhouse installation was interrupted for unknown reasons, the following error may be displayed during the re-installation:

  ┌ ⛵ ~ Bootstrap: Install Deckhouse
  └ ⛵ ~ Bootstrap: Install Deckhouse (43.50 seconds) FAILED

  Timeout while "Check prevent break another bootstrapped": last error: Cluster UUID's not equal in the cluster                              ↵
  (7489d07a-5fbb-4269-ba0d-e0340ce4f118) and in the cache ().
  Probably you are trying bootstrap cluster on node with previous created cluster.
  Please check hostname.

To reinstall Deckhouse Platform on the cluster, you need to delete the following ConfigMaps in the kube-system namespace:

  d8-cluster-is-bootstraped
  d8-cluster-uuid

and then start the installation again.

Use a container image to install the Deckhouse Platform. It is necessary to transfer configuration file to the container.

Run the installer on the personal computer.

  • Linux / macOS
  • Windows

Log in on the personal computer to the container image registry:

echo <LICENSE_TOKEN> | docker login -u license-token --password-stdin registry.deckhouse.io

Run a container with the installer:

If, with VPN enabled, the container with the installer cannot access the network, follow the instructions in the FAQ.

docker run --pull=always -it -v "$PWD/config.yml:/config.yml" \
  -v "$HOME/.kube/config:/kubeconfig" registry.deckhouse.io/deckhouse/ee/install:stable bash

Log in on the personal computer to the container image registry by providing the license key as a password:

docker login -u license-token registry.deckhouse.io

Run a container with the installer:

docker run --pull=always -it -v "%cd%\config.yml:/config.yml" -v "%userprofile%\.kube\config:/kubeconfig" registry.deckhouse.io/deckhouse/ee/install:stable bash -c "chmod 400 /tmp/.ssh/<SSH_PRIVATE_KEY_FILE>; bash"

Notes:

  • The kubectl configuration file with access to the Kubernetes API must be mounted as the /kubeconfig file in the container. The guide assumes that it is the .kube/config file in the user’s home directory.

Now, to initiate the process of installation, you need to execute inside the container:

dhctl bootstrap-phase install-deckhouse --kubeconfig=/kubeconfig --config=/config.yml

The installation process may take from 5 to 30 minutes, depending on the connection.

After the installation is complete, the installer will output the IP of the master node (you will need it further). Example output:

...
┌ 🎈 ~ Common: Kubernetes Master Node addresses for SSH
│ cloud-demo-master-0 | ssh ubuntu@1.2.3.4
└ 🎈 ~ Common: Kubernetes Master Node addresses for SSH (0.00 seconds)

Almost everything is ready for a fully-fledged Deckhouse Platform to work.

If something went wrong

Some providers’ clusters may require extra steps before or after installing Deckhouse Platform.

Here are some common problems and ways to solve them. If you run into other difficulties installing Deckhouse Platform in an existing cluster, describe them in an issue on GitHub.

Installation errors at the 'Waiting for Deckhouse to become Ready' step

  • Error of the following kind:

    │ │ ┌ Waiting for Deckhouse to become Ready
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    │ │ │ Deckhouse pod found: deckhouse-64649df6f9-mf6dt (Pending)
    

    Probably, there is no node in the cluster with the node-role.kubernetes.io/control-plane: "" label which is originally used in the nodeSelector of the deckhouse deployment manifest.

    Ways to fix the error:

    • Insert the proper nodeSelector into the deckhouse deployment:
      kubectl -n d8-system edit deployment/deckhouse
      
    • Delete nodeSelector in the deckhouse deployment:
      kubectl patch -n d8-system deployment deckhouse --type json -p '[{"op": "remove", "path": "/spec/template/spec/nodeSelector"}]'
      
  • Error of the following kind:

    Waiting for Deckhouse Platform to become Ready
    │ │ Deckhouse pod found: deckhouse-7cc8b6f4bd-9l99t (Running)
    │ │ Running pod found! Checking logs...
    │ │ Request failed. Probably pod was restarted during installation.
    │ │ No Deckhouse pod found.
    

    And also an error with the status appears in the deckhouse module:

    Status:   ModuleError: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicy" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "system-ns.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first, resource mapping not found for name: "heritage-label-objects.deckhouse.io" namespace: "" from "": no matches for kind "ValidatingAdmissionPolicyBinding" in version "admissionregistration.k8s.io/v1beta1" ensure CRDs are installed first]
    

    May be, the kube-apiserver.yaml static manifest does not specify `runtime-config’.

    Add the spec.containers.command parameter to /etc/kubernetes/manifests/kube-api server.yaml value- –runtime-config=admissionregistration.k8s.io/v1beta1=true,admissionregistration.k8s.io/v1alpha1=true`.

    Caution. kube-apiserver may not respond to requests for a while.

Error in case of Deckhouse Platform installation after interruption

If the Deckhouse installation was interrupted for unknown reasons, the following error may be displayed during the re-installation:

  ┌ ⛵ ~ Bootstrap: Install Deckhouse
  └ ⛵ ~ Bootstrap: Install Deckhouse (43.50 seconds) FAILED

  Timeout while "Check prevent break another bootstrapped": last error: Cluster UUID's not equal in the cluster                              ↵
  (7489d07a-5fbb-4269-ba0d-e0340ce4f118) and in the cache ().
  Probably you are trying bootstrap cluster on node with previous created cluster.
  Please check hostname.

To reinstall Deckhouse Platform on the cluster, you need to delete the following ConfigMaps in the kube-system namespace:

  d8-cluster-is-bootstraped
  d8-cluster-uuid

and then start the installation again.