< img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=3131724&fmt=gif" />
Ding Xinlei
Published on:2025-06-03    The number of views:

Quick Deployment of High Availability Kubernetes 1.33.0 Cluster Based on KubeKey 3.1.9

Quick Deployment of High-Availability Kubernetes 1.33.0 Cluster Using KubeKey 3.1.9

Author: Ding Xinlei, Cloud-Native Operations Engineer Focused on deep integration of KubeSphere and Kubernetes (K8s), passionate about simplifying Kubernetes operations and enabling enterprise cloud-native transformation.


🌍 Compatibility Notice

  • This guide is optimized for global users.
  • Default deployment uses public registries (docker.io, quay.io, ghcr.io).
  • Harbor (private registry) is optional, only needed for offline / air-gapped environments.
  • Timezone is set to UTC.
  • NTP server is pool.ntp.org.

Table of Contents

  1. Background
  2. Software Versions
  3. Server Planning
  4. Host Initialization
  5. Package Preparation
  6. Optional: Harbor Setup (Offline)
  7. Kubernetes Cluster Installation
  8. KubeSphere Installation
  9. Conclusion

1. Background

1.1 KubeKey 3.1.9 Updates

  • Support for Kubernetes 1.33.0
  • Bug fixes:
    • kubelet cgroup configuration
    • UFW and IPVS issues

1.2 Kubernetes 1.33.0 Highlights

  • In-place vertical scaling
  • Sidecar GA
  • Indexed Jobs GA
  • Improved ServiceAccount token security
  • kubectl subresource support
  • Dynamic Service CIDR expansion
  • Enhanced User Namespaces
  • OCI image mounting
  • Ordered namespace deletion

2. Software Versions

ComponentVersion
OSopenEuler 22.03 (LTS-SP3) amd64
Docker24.0.9
Kubernetesv1.33.0
KubeSpherev4.1.3
KubeKeyv3.1.9

3. Server Planning

IP AddressHostnameRole
192.168.118.180k8s-master1master
192.168.118.181k8s-node01worker
192.168.118.182k8s-node02worker

4. Host Initialization

4.1 Configure Static IP

vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.118.180
NETMASK=255.255.255.0
GATEWAY=192.168.118.2
DNS1=192.168.118.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
ONBOOT=yes

4.2 Disable SELinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

4.3 Disable Swap for Performance Improvement

swapoff -a
vim /etc/fstab

4.4 Disable Firewalld

systemctl stop firewalld
systemctl disable firewalld

4.5 Generate config file

kk create config

It will generate a default configuration file as shown here: https://github.com/whenegghitsrock/kubekey-carryon/blob/master/docs/config-example.md.

You can then modify it according to your environment settings.

Note: The hostname will be updated based on your configuration file.

4.6 Install Basic Packages

kk init os -f config-example.yaml

4.7 Create Data Directories

timezone: "UTC"
ntpServers:
  - pool.ntp.org

5. Package Preparation

5.1 Download KubeKey

curl -sSL https://kubesphere-carryon.top/pkg/downloadKubekey.sh | sh -

5.2 Prepare manifest.yaml

./kk create manifest --with-kubernetes v1.33.0 --with-registry
vim manifest-sample.yaml

Example image sources (use public registries):

images:
  - docker.io/library/pause:3.9
  - k8s.gcr.io/kube-apiserver:v1.33.0
  - k8s.gcr.io/kube-controller-manager:v1.33.0
  - k8s.gcr.io/kube-scheduler:v1.33.0
  - docker.io/coredns/coredns:1.9.3
  ...

5.3 Optional: Export Images (Offline Only)

kk artifact export -m manifest-sample.yaml -o kubesphere.tar.gz

6. Optional: Harbor Setup (Offline)

Note: Harbor is required only for offline or air-gapped environments. Online users can skip this section.

6.1 Create Harbor Config (Optional)

kk create config --with-kubernetes v1.33.0 -f config-sample.yaml

Example:

registry:
  type: "harbor"
  privateRegistry: "your.harbor.domain"

6.2 Push Images (Optional)

./kk artifact image push -f config-sample.yaml -a kubesphere.tar.gz

7. Kubernetes Cluster Installation

7.1 Create Cluster

./kk create cluster -f config-sample.yaml --with-local-storage`

7.2 Verify Cluster

kubectl get nodes

8. KubeSphere Installation

8.1 Install KubeSphere via Helm

helm upgrade --install -n kubesphere-system --create-namespace ks-core ks-core-1.1.5.tgz \
  --set global.imageRegistry=docker.io/ks \
  --set extension.imageRegistry=docker.io/ks \
  --set ksExtensionRepository.image.tag=v1.1.6 \
  --debug \
  --wait

8.2 Verify Deployment

kubectl get pods -n kubesphere-system

Access KubeSphere:

http://<master-ip>:30880

Default credentials:

Username: admin
Password: P@88w0rd

9. Conclusion

You have successfully deployed a high-availability Kubernetes 1.33.0 cluster with KubeKey 3.1.9 and KubeSphere 4.1.3.

✅ For online deployments, public registries (docker.io, etc.) are used by default. ✅ For offline deployments, Harbor is supported (optional).

You can now customize your cluster with advanced storage, networking, and observability as needed.

Enjoy your cloud-native journey! 🚀

close

Receive the latest news, articles and updates from KubeSphere