今天,我将为大家实战演示,如何基于操作系统 openEuler 22.03 LTS SP3,利用 KubeKey 制作 Kubernetes 离线安装包,并实战离线部署 Kubernetes v1.28.8 集群。

实战服务器配置 (架构 1:1 复刻小规模生产环境,配置略有不同)

主机名 IP CPU 内存 系统盘 数据盘 用途
ksp-control-1 192.168.9.91 8 16 40 100 离线环境 k8s-control-plane
ksp-control-2 192.168.9.92 8 16 40 100 离线环境 k8s-control-plane
ksp-control-3 192.168.9.93 8 16 40 100 离线环境 k8s-control-plane
ksp-registry 192.168.9.90 4 8 40 100 离线环境部署节点和镜像仓库节点
ksp-deploy 192.168.9.89 4 8 40 100 联网主机用于制作离线包
合计 5 32 64 200 500

实战环境涉及软件版本信息

  • 操作系统:openEuler 22.03 LTS SP3
  • Kubernetes:v1.28.8
  • KubeKey: v3.1.1

1. 制作离线部署资源

本文增加了一台能联网的 ksp-deploy 节点,在该节点下载 KubeKey 最新版(v3.1.1),用来制作离线部署资源包。

1.1 下载 KubeKey

  • 下载最新版的 KubeKey
mkdir -p /data/kubekey
cd /data/kubekey # 选择中文区下载(访问 GitHub 受限时使用)
export KKZONE=cn # 执行下载命令,获取最新版的 kk(受限于网络,有时需要执行多次)
curl -sfL https://get-kk.kubesphere.io | sh -

1.2 创建 manifests 模板文件

KubeKey v3.1.0 之前, manifests 文件需要根据模板手动编写, 现在可以通过 Kubekey 的 create manifest 命令自动生成 manifests 模板。

  1. create manifest 支持的参数如下
$ ./kk create manifest --help
Create an offline installation package configuration file Usage:
kk create manifest [flags] Flags:
--arch stringArray Specify a supported arch (default [amd64])
--debug Print detailed information
-f, --filename string Specify a manifest file path
-h, --help help for manifest
--ignore-err Ignore the error message, remove the host which reported error and force to continue
--kubeconfig string Specify a kubeconfig file
--name string Specify a name of manifest object (default "sample")
--namespace string KubeKey namespace to use (default "kubekey-system")
--with-kubernetes string Specify a supported version of kubernetes
--with-registry Specify a supported registry components
-y, --yes Skip confirm check
  1. 官方示例(支持多集群、多架构)
# 示例:创建包含 kubernetes v1.24.17,v1.25.16,且 cpu 架构为 amd64、arm64 的 manifests 文件。
./kk create manifest --with-kubernetes v1.24.17,v1.25.16 --arch amd64 --arch arm64
  1. 创建一个 amd64 架构 kubernetes v1.28.8 的 manifests 文件
./kk create manifest --name opsxlab --with-kubernetes v1.28.8 --arch amd64 --with-registry "docker registry"
  1. 生成的配置文件如下
apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Manifest
metadata:
name: opsxlab
spec:
arches:
- amd64
operatingSystems:
- arch: amd64
type: linux
id: ubuntu
version: "20.04"
osImage: Ubuntu 20.04.6 LTS
repository:
iso:
localPath:
url:
kubernetesDistributions:
- type: kubernetes
version: v1.28.8
components:
helm:
version: v3.14.3
cni:
version: v1.2.0
etcd:
version: v3.5.13
containerRuntimes:
- type: docker
version: 24.0.9
- type: containerd
version: 1.7.13
calicoctl:
version: v3.27.3
crictl:
version: v1.29.0
docker-registry:
version: "2"
harbor:
version: v2.10.1
docker-compose:
version: v2.26.1
images:
- docker.io/kubesphere/pause:3.9
- docker.io/kubesphere/kube-apiserver:v1.28.8
- docker.io/kubesphere/kube-controller-manager:v1.28.8
- docker.io/kubesphere/kube-scheduler:v1.28.8
- docker.io/kubesphere/kube-proxy:v1.28.8
- docker.io/coredns/coredns:1.9.3
- docker.io/kubesphere/k8s-dns-node-cache:1.22.20
- docker.io/calico/kube-controllers:v3.27.3
- docker.io/calico/cni:v3.27.3
- docker.io/calico/node:v3.27.3
- docker.io/calico/pod2daemon-flexvol:v3.27.3
- docker.io/calico/typha:v3.27.3
- docker.io/flannel/flannel:v0.21.3
- docker.io/flannel/flannel-cni-plugin:v1.1.2
- docker.io/cilium/cilium:v1.15.3
- docker.io/cilium/operator-generic:v1.15.3
- docker.io/hybridnetdev/hybridnet:v0.8.6
- docker.io/kubeovn/kube-ovn:v1.10.10
- docker.io/kubesphere/multus-cni:v3.8
- docker.io/openebs/provisioner-localpv:3.3.0
- docker.io/openebs/linux-utils:3.3.0
- docker.io/library/haproxy:2.9.6-alpine
- docker.io/plndr/kube-vip:v0.7.2
- docker.io/kubesphere/kata-deploy:stable
- docker.io/kubesphere/node-feature-discovery:v0.10.0
registry:
auths: {}

默认的配置文件说明:

  • KubeKey v3.1.1 生成的 manifests 配置文件适用于 ubuntu 部署纯 Kubernetes 集群。因此,我们需要稍作修改,生成一份适配 openEuler 22.03 LTS SP3 的 manifests 文件。
  • images 列表中有一些镜像实际上用不到,可以删除。本文保留了所有镜像。

1.3 修改 manifest 模板文件

根据上面的文件及相关信息,生成最终的 manifest 文件 ksp-v1.28.8-manifest-opsxlab.yaml

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Manifest
metadata:
name: opsxlab
spec:
arches:
- amd64
operatingSystems:
- arch: amd64
type: linux
id: openEuler
version: "22.03"
osImage: openEuler 22.03 (LTS-SP3)
repository:
iso:
localPath: "/data/kubekey/openEuler-22.03-rpms-amd64.iso"
url:
kubernetesDistributions:
- type: kubernetes
version: v1.28.8
components:
helm:
version: v3.14.3
cni:
version: v1.2.0
etcd:
version: v3.5.13
containerRuntimes:
- type: docker
version: 24.0.9
- type: containerd
version: 1.7.13
calicoctl:
version: v3.27.3
crictl:
version: v1.29.0
docker-registry:
version: "2"
harbor:
version: v2.10.1
docker-compose:
version: v2.26.1
images:
- docker.io/kubesphere/pause:3.9
- docker.io/kubesphere/kube-apiserver:v1.28.8
- docker.io/kubesphere/kube-controller-manager:v1.28.8
- docker.io/kubesphere/kube-scheduler:v1.28.8
- docker.io/kubesphere/kube-proxy:v1.28.8
- docker.io/coredns/coredns:1.9.3
- docker.io/kubesphere/k8s-dns-node-cache:1.22.20
- docker.io/calico/kube-controllers:v3.27.3
- docker.io/calico/cni:v3.27.3
- docker.io/calico/node:v3.27.3
- docker.io/calico/pod2daemon-flexvol:v3.27.3
- docker.io/calico/typha:v3.27.3
- docker.io/flannel/flannel:v0.21.3
- docker.io/flannel/flannel-cni-plugin:v1.1.2
- docker.io/cilium/cilium:v1.15.3
- docker.io/cilium/operator-generic:v1.15.3
- docker.io/hybridnetdev/hybridnet:v0.8.6
- docker.io/kubeovn/kube-ovn:v1.10.10
- docker.io/kubesphere/multus-cni:v3.8
- docker.io/openebs/provisioner-localpv:3.3.0
- docker.io/openebs/linux-utils:3.3.0
- docker.io/library/haproxy:2.9.6-alpine
- docker.io/plndr/kube-vip:v0.7.2
- docker.io/kubesphere/kata-deploy:stable
- docker.io/kubesphere/node-feature-discovery:v0.10.0
- docker.io/kubesphere/busybox:1.31.1
registry:
auths: {}

manifest 修改说明

  • operatingSystems 配置删除默认的 ubuntu,新增 openEuler 配置
  • 建议把常用的 nginx、busybox 等基础镜像也加到 images 列表中

1.4 获取操作系统依赖包

本实验环境使用的操作系统是 x64 的 openEuler 22.03 LTS SP3,需要自己制作安装 Kubernetes 需要的操作系统依赖包镜像 openEuler-22.03-rpms-amd64.iso,其他操作系统请读者在 KubeKey releases 页面下载。

KubeKey 官方支持的操作系统依赖包,包含以下系统:

  • almalinux-9.0
  • centos7
  • debian10
  • debian11
  • ubuntu-18.04
  • ubuntu-20.04
  • ubuntu-22.04

个人建议在离线环境用 openEuler 的安装 ISO,制做一个完整的离线软件源。在利用 KubeKey 安装离线集群时,就不需要考虑操作系统依赖包的问题。

1.5 导出制品 artifact

根据生成的 manifest,执行下面的命令制作制品(artifact)。

export KKZONE=cn
./kk artifact export -m ksp-v1.28.8-manifest-opsxlab.yaml -o ksp-offline-v1.28-artifact.tar.gz

正确执行后,输出结果如下(受限于篇幅,仅展示最终结果):

....
kube/v1.28.8/amd64/kubeadm
kube/v1.28.8/amd64/kubectl
kube/v1.28.8/amd64/kubelet
registry/compose/v2.26.1/amd64/docker-compose-linux-x86_64
registry/harbor/v2.10.1/amd64/harbor-offline-installer-v2.10.1.tgz
registry/registry/2/amd64/registry-2-linux-amd64.tar.gz
repository/amd64/openEuler/22.03/openEuler-22.03-amd64.iso
runc/v1.1.12/amd64/runc.amd64
06:44:12 CST success: [LocalHost]
06:44:12 CST [ChownOutputModule] Chown output file
06:44:12 CST success: [LocalHost]
06:44:12 CST [ChownWorkerModule] Chown ./kubekey dir
06:44:12 CST success: [LocalHost]
06:44:12 CST Pipeline[ArtifactExportPipeline] execute successfull

制品制作完成后,查看制品大小(全镜像,制品包居然达到了 2.7G,实际使用时尽量有选择的裁剪吧)。

$ ls -lh ksp-offline-v1.28-artifact.tar.gz
-rw-r--r-- 1 root root 2.7G May 31 06:44 ksp-offline-v1.28-artifact.tar.gz

1.6 导出 KubeKey 离线安装包

把 KubeKey 工具也制作成压缩包,便于拷贝到离线节点。

$ tar zcvf kubekey-offline-v1.28.tar.gz kk kubekey-v3.1.1-linux-amd64.tar.gz

2. 准备离线部署 Kubernetes 的前置数据

请注意,以下操作无特殊说明,均在离线环境部署(Registry)节点上执行。

2.1 上传离线部署资源包到部署节点

将以下离线部署资源包,上传至离线环境部署(Registry) 节点的 /data/ 目录(可根据实际情况修改)。

  • Kubekey:kubekey-offline-v1.28.tar.gz
  • 制品 artifact:ksp-offline-v1.28-artifact.tar.gz

执行以下命令,解压 KubeKey:

# 创离线资源存放的数据目录
mkdir /data/kubekey
tar xvf /data/kubekey-offline-v1.28.tar.gz -C /data/kubekey
mv ksp-offline-v1.28-artifact.tar.gz /data/kubekey

注意: openEuler 默认不安装 tar,请自己想办法在离线部署节点上安装 tar。

2.2 创建离线集群配置文件

  • 执行以下命令创建离线集群配置文件
cd /data/kubekey
./kk create config --with-kubernetes v1.28.8 -f ksp-v1228-offline.yaml

命令执行成功后,在当前目录会生成文件名为 ksp-v1228-offline.yaml 的配置文件。

2.3 修改 Cluster 配置

离线集群配置文件中 kind: Cluster 小节的作用是部署 Kubernetes 集群。本示例采用 3 个节点同时作为 control-plane、etcd 节点和 worker 节点。

执行命令,修改离线集群配置文件 ksp-v1228-offline.yaml

vi ksp-v1228-offline.yaml

修改 kind: Cluster 小节中 hosts 和 roleGroups 等信息,修改说明如下。

  • hosts:指定节点的 IP、ssh 用户、ssh 密码、ssh 端口。示例演示了 ssh 端口号的配置方法。同时,新增一个 Registry 节点的配置
  • roleGroups:指定 3 个 etcd、control-plane 节点,复用相同的机器作为 3 个 worker 节点
  • 必须指定主机组 registry 作为仓库部署节点
  • internalLoadbalancer: 启用内置的 HAProxy 负载均衡器
  • system.rpms:新增配置,部署时安装 rpm 包(openEuler 系统默认没有安装 tar 包,必须提前安装)
  • domain:自定义了一个 opsxlab.cn,没特殊需求的场景保留默认值即可
  • containerManager:使用 containerd
  • storage.openebs.basePath:新增配置,指定 openebs 默认存储路径为 /data/openebs/local
  • registry:不指定 type 类型,默认安装 docker registry

修改后的完整示例如下:

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
name: sample
spec:
hosts:
- {name: ksp-control-1, address: 192.168.9.91, internalAddress: 192.168.9.91, port:22, user: root, password: "OpsXlab@2024"}
- {name: ksp-control-2, address: 192.168.9.92, internalAddress: 192.168.9.92, user: root, password: "OpsXlab@2024"}
- {name: ksp-control-3, address: 192.168.9.93, internalAddress: 192.168.9.93, user: root, password: "OpsXlab@2024"}
- {name: ksp-registry, address: 192.168.9.90, internalAddress: 192.168.9.90, user: root, password: "OpsXlab@2024"}
roleGroups:
etcd:
- ksp-control-1
- ksp-control-2
- ksp-control-3
control-plane:
- ksp-control-1
- ksp-control-2
- ksp-control-3
worker:
- ksp-control-1
- ksp-control-2
- ksp-control-3
registry:
- ksp-registry
controlPlaneEndpoint:
## Internal loadbalancer for apiservers
internalLoadbalancer: haproxy domain: lb.opsxlab.cn
address: ""
port: 6443
system:
rpms:
- tar
kubernetes:
version: v1.28.8
clusterName: opsxlab.cn
autoRenewCerts: true
containerManager: containerd
etcd:
type: kubekey
network:
plugin: calico
kubePodsCIDR: 10.233.64.0/18
kubeServiceCIDR: 10.233.0.0/18
## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
multusCNI:
enabled: false
storage:
openebs:
basePath: /data/openebs/local # 默认没有的新增配置,base path of the local PV provisioner
registry:
auths:
"registry.opsxlab.cn":
certsPath: "/etc/docker/certs.d/registry.opsxlab.cn"
privateRegistry: "registry.opsxlab.cn"
namespaceOverride: "kubesphereio"
registryMirrors: []
insecureRegistries: []
addons: []

3. 离线部署镜像仓库

为了验证 Kubekey 离线部署镜像仓库服务的能力,本文采用 Kubekey 部署镜像仓库 Docker Registry小规模生产环境没必要使用 Harbor

请注意,以下操作无特殊说明,均在离线环境部署(Registry)节点上执行。

3.1 安装 Docker Registry

执行以下命令安装镜像仓库 Docker Registry

./kk init registry -f ksp-v1228-offline.yaml -a ksp-offline-v1.28-artifact.tar.gz

正确执行后,输出结果如下(受限于篇幅,仅展示最终结果):

07:02:15 CST [InitRegistryModule] Fetch registry certs
07:02:15 CST success: [ksp-registry]
07:02:15 CST [InitRegistryModule] Generate registry Certs
[certs] Generating "ca" certificate and key
[certs] registry.opsxlab.cn serving cert is signed for DNS names [ksp-registry localhost registry.opsxlab.cn] and IPs [127.0.0.1 ::1 192.168.9.90]
07:02:16 CST success: [LocalHost]
07:02:16 CST [InitRegistryModule] Synchronize certs file
07:02:19 CST success: [ksp-registry]
07:02:19 CST [InitRegistryModule] Synchronize certs file to all nodes
07:02:25 CST success: [ksp-registry]
07:02:25 CST success: [ksp-control-2]
07:02:25 CST success: [ksp-control-1]
07:02:25 CST success: [ksp-control-3]
07:02:25 CST [InstallRegistryModule] Install registry binary
07:02:25 CST success: [ksp-registry]
07:02:25 CST [InstallRegistryModule] Generate registry service
07:02:26 CST success: [ksp-registry]
07:02:26 CST [InstallRegistryModule] Generate registry config
07:02:27 CST success: [ksp-registry]
07:02:27 CST [InstallRegistryModule] Start registry service Local image registry created successfully. Address: registry.opsxlab.cn 07:02:27 CST success: [ksp-registry]
07:02:27 CST [ChownWorkerModule] Chown ./kubekey dir
07:02:27 CST success: [LocalHost]
07:02:27 CST Pipeline[InitRegistryPipeline] execute successfully
  • 查看 Docker 是否配置了私有证书(确保使用了自定义域名及证书
$ ls /etc/ssl/registry/ssl/
ca.crt ca-key.pem ca.pem registry.opsxlab.cn.cert registry.opsxlab.cn.key registry.opsxlab.cn-key.pem registry.opsxlab.cn.pem $ ls /etc/docker/certs.d/registry.opsxlab.cn/
ca.crt registry.opsxlab.cn.cert registry.opsxlab.cn.key

3.2 推送离线镜像到镜像仓库

将提前准备好的离线镜像推送到镜像仓库,这一步为可选项,因为创建集群的时候默认会推送镜像(本文使用参数忽略了)。为了部署成功率,建议先推送。

  • 推送离线镜像
./kk artifact image push -f ksp-v1228-offline.yaml -a ksp-offline-v1.28-artifact.tar.gz
  • 正确的安装结果如下(受限于篇幅,内容有删减):
......
07:04:34 CST Push multi-arch manifest list: registry.opsxlab.cn/kubesphereio/kube-controllers:v3.27.3
INFO[0035] Retrieving digests of member images
07:04:34 CST Digest: sha256:70bfc9dcf0296a14ae87035b8f80911970cb0990c4bb832fc4cf99937284c477 Length: 393
07:04:34 CST success: [LocalHost]
07:04:34 CST [ChownWorkerModule] Chown ./kubekey dir
07:04:34 CST success: [LocalHost]
07:04:34 CST Pipeline[ArtifactImagesPushPipeline] execute successfully

4. 离线部署 Kubernetes 集群

请注意,以下操作无特殊说明,均在离线环境部署(Registry)节点上执行。

4.1 离线部署 Kubernetes 集群

执行以下命令,部署 Kubernetes 集群。

./kk create cluster -f ksp-v1228-offline.yaml -a ksp-offline-v1.28-artifact.tar.gz --with-packages --skip-push-images

参数说明:

  • --with-packages:安装操作系统依赖
  • --skip-push-images: 忽略推送镜像,前面已经完成了推送镜像到私有仓库的任务

部署完成后,您应该会在终端上看到类似于下面的输出。

daemonset.apps/calico-node created
deployment.apps/calico-kube-controllers created
10:19:05 CST skipped: [ksp-control-3]
10:19:05 CST skipped: [ksp-control-2]
10:19:05 CST success: [ksp-control-1]
10:19:05 CST [ConfigureKubernetesModule] Configure kubernetes
10:19:05 CST success: [ksp-control-1]
10:19:05 CST skipped: [ksp-control-2]
10:19:05 CST skipped: [ksp-control-3]
10:19:05 CST [ChownModule] Chown user $HOME/.kube dir
10:19:05 CST success: [ksp-control-2]
10:19:05 CST success: [ksp-control-1]
10:19:05 CST success: [ksp-control-3]
10:19:05 CST [AutoRenewCertsModule] Generate k8s certs renew script
10:19:07 CST success: [ksp-control-3]
10:19:07 CST success: [ksp-control-2]
10:19:07 CST success: [ksp-control-1]
10:19:07 CST [AutoRenewCertsModule] Generate k8s certs renew service
10:19:08 CST success: [ksp-control-1]
10:19:08 CST success: [ksp-control-2]
10:19:08 CST success: [ksp-control-3]
10:19:08 CST [AutoRenewCertsModule] Generate k8s certs renew timer
10:19:09 CST success: [ksp-control-2]
10:19:09 CST success: [ksp-control-3]
10:19:09 CST success: [ksp-control-1]
10:19:09 CST [AutoRenewCertsModule] Enable k8s certs renew service
10:19:10 CST success: [ksp-control-2]
10:19:10 CST success: [ksp-control-1]
10:19:10 CST success: [ksp-control-3]
10:19:10 CST [SaveKubeConfigModule] Save kube config as a configmap
10:19:10 CST success: [LocalHost]
10:19:10 CST [AddonsModule] Install addons
10:19:10 CST success: [LocalHost]
10:19:10 CST Pipeline[CreateClusterPipeline] execute successfully
Installation is complete. Please check the result using the command: kubectl get pod -A

在 control-1 节点,执行命令 kubectl get pod -A,查看集群部署的最终结果,确保所有 Pod 的状态均为 Running

$ kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-76bdc94776-dztgc 1/1 Running 0 2m51s
kube-system calico-node-mxmm6 1/1 Running 0 2m51s
kube-system calico-node-p57qs 1/1 Running 0 2m51s
kube-system calico-node-pf5pb 1/1 Running 0 2m51s
kube-system coredns-6587775575-tp6sg 1/1 Running 0 3m16s
kube-system coredns-6587775575-v9jc6 1/1 Running 0 3m16s
kube-system kube-apiserver-ksp-control-1 1/1 Running 0 3m28s
kube-system kube-apiserver-ksp-control-2 1/1 Running 0 2m45s
kube-system kube-apiserver-ksp-control-3 1/1 Running 0 2m49s
kube-system kube-controller-manager-ksp-control-1 1/1 Running 0 3m28s
kube-system kube-controller-manager-ksp-control-2 1/1 Running 0 2m57s
kube-system kube-controller-manager-ksp-control-3 1/1 Running 0 2m57s
kube-system kube-proxy-8mqvs 1/1 Running 0 2m56s
kube-system kube-proxy-p9j9b 1/1 Running 0 2m56s
kube-system kube-proxy-sdtgl 1/1 Running 0 2m56s
kube-system kube-scheduler-ksp-control-1 1/1 Running 0 3m28s
kube-system kube-scheduler-ksp-control-2 1/1 Running 0 3m1s
kube-system kube-scheduler-ksp-control-3 1/1 Running 0 3m1s
kube-system nodelocaldns-9gj5t 1/1 Running 0 3m1s
kube-system nodelocaldns-n7wwm 1/1 Running 0 3m2s
kube-system nodelocaldns-sbmxl 1/1 Running 0 3m16s

4.2 kubectl 命令行验证集群状态

在 control-1 节点运行 kubectl 命令获取 Kubernetes 集群资源信息。

  • 查看集群节点信息
kubectl get nodes -o wide

在输出结果中可以看到,当前的 Kubernetes 集群有 3个节点,并详细展示每个节点的名字、状态、角色、存活时间、Kubernetes 版本号、内部 IP、操作系统类型、内核版本和容器运行时等信息。

$ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ksp-control-1 Ready control-plane,worker 7m45s v1.28.8 192.168.9.91 <none> openEuler 22.03 (LTS-SP3) 5.10.0-182.0.0.95.oe2203sp3.x86_64 containerd://1.7.13
ksp-control-2 Ready control-plane,worker 7m14s v1.28.8 192.168.9.92 <none> openEuler 22.03 (LTS-SP3) 5.10.0-182.0.0.95.oe2203sp3.x86_64 containerd://1.7.13
ksp-control-3 Ready control-plane,worker 7m15s v1.28.8 192.168.9.93 <none> openEuler 22.03 (LTS-SP3) 5.10.0-182.0.0.95.oe2203sp3.x86_64 containerd://1.7.13
  • 查看 Pod 列表

输入以下命令获取在 Kubernetes 集群上运行的 Pod 列表,确保所有的容器状态都是 Running受限于篇幅,内容不展示)。

kubectl get pods -o wide -A

至此,我们部署完成了一套 Control-plane 和 Worker 复用,3 节点的 Kubernetes 集群。

免责声明:

  • 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
  • 本文所述内容仅通过实战环境验证测试,读者可学习、借鉴,但严禁直接用于生产环境由此引发的任何问题,作者概不负责

本文由博客一文多发平台 OpenWrite 发布!

使用 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8 实战的更多相关文章

  1. 招商银行 KubeVela 离线部署实践

    招商银行云平台开发团队自 2021 年开始接触 KubeVela,并探索 KubeVela 在招商银行云平台的落地实践,借此提升云原生应用交付与管理能力.同时因为金融保险行业的特殊性,网络安全管控措施 ...

  2. kubeSphere v3.3.0+kubernetes v1.22.10 集群部署

    概述 KubeSphere 是 GitHub 上的一个开源项目,是成千上万名社区用户的聚集地.很多用户都在使用 KubeSphere 运行工作负载.对于在 Linux 上的安装,KubeSphere ...

  3. 手把手教你一套完善且高效的k8s离线部署方案

    作者:郝建伟 背景 面对更多项目现场交付,偶而会遇到客户环境不具备公网条件,完全内网部署,这就需要有一套完善且高效的离线部署方案. 系统资源 编号 主机名称 IP 资源类型 CPU 内存 磁盘 01 ...

  4. Cesium简介以及离线部署运行

    Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...

  5. arcgis api for js入门开发系列一arcgis api离线部署

    在我的GIS之家QQ群里,很多都是arcgis api for js开发的新手,他们一般都是GIS专业的学生,或者从计算机专业刚刚转向来的giser,他们难免会遇到各种webgis开发的简单问题,由于 ...

  6. Node服务一键离线部署

    背景说明 项目测试通过,到了上线部署阶段.部署的机器安全限制比较严格,不允许访问外网.此外,没有对外网开放ssh服务,无法通过ssh远程操作. 针对上面提到的两条限制条件,通过下面方式解决: 无法访问 ...

  7. 微服务架构 - 离线部署k8s平台并部署测试实例

    一般在公司部署或者真实环境部署k8s平台,很有可能是内网环境,也即意味着是无法连接互联网的环境,这时就需要离线部署k8s平台.在此整理离线部署k8s的步骤,分享给大家,有什么不足之处,欢迎指正. 1. ...

  8. arcgis api 4.x for js 离线部署

    在我的GIS之家群里,经常遇到 webgis 开发新手们提问 arcgis api for js 如何本地离线部署,而不是直接调用在线的,因为在线模式依赖互联网以及网速环境因素,受到的限制影响比较大. ...

  9. CentOS6.9下离线部署Django项目

    最近项目服务器变动,研究了CentOS6.9下httpd2.4+django1.11.16+python3.6+PostgreSQL的部署,之前还有一个ubuntu16.04下的部署等以后整理好后再来 ...

  10. Cesium 之简介以及离线部署运行篇

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. C ...

随机推荐

  1. 【Zookeeper】02 文件系统 & 监听机制

    官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目, 它主要是用来解决分布式应用中经常遇到的一些数据管理问题, 如:统一命名服务.状态同步服务.集 ...

  2. 推荐一款好用的PDF转换工具,可以拆分、合并,亲测好用!!!

    推荐一款好用的PDF转换工具,可以拆分.合并,等等操作,亲测好用. PS. 因为经常会遇到PDF的拆分需要,以前在网上的都是免费的,后来的也都变成付费的无水印的了,再然后就变成全都要收费了.尴尬的是, ...

  3. DophinScheduler 如何定期删除日志实例?

    转载自东华果汁哥 Apache DophinScheduler 运行一段时间后,实例调度日志越来越多,需要定期清理. SQL 错误 [1701] [42000]: Cannot truncate a ...

  4. 代码随想录Day11

    150. 逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式. 请你计算该表达式.返回一个表示表达式值的整数. 注意: 有效的算符为 '+'.'-'.' ...

  5. 后端开发学习敏捷需求-->干系人分析与识别

    干系人分析与识别 5W1H 干系人分析与识别 1. 干系人是什么 直接或者间接影响专题,以及被专题影响的人和组织,用户也是属于干系人,是产品直接或者间接的使用者 又叫利益相关者,指积极参与专题或者在专 ...

  6. Linux中登录mysql

    输入 mysql -u root -p 然后输入密码,就能登录 root@zrt2:/home/zrt2# mysql -u root -pEnter password: Welcome to the ...

  7. __set_BASEPRI(); 使用不正常

    虽然 BASEPRI 是8位寄存器,但是STM32的CortexM3&M4只用了高4位,低四位是没有用到的. __set_BASEPRI(0x0f); // 无效,小于0x0f的值无效 __s ...

  8. Atcoder ABC296 F

    Atcoder ABC296 F F - Simultaneous Swap 链接: F - Simultaneous Swap (atcoder.jp) 简要题意: 问题陈述 给你两个 \(N\) ...

  9. Windows 新建用户帐户

    Windows 近年来大力推广使用 Microsoft 帐户登录 Windows.然而,如果你这么做了,Windows 会取你登录帐户的前 5 个字母作为你的本地用户名,非常的丑陋.更难受的是本地用户 ...

  10. Lucas定理入门

    前置结论 如果 \(p\) 为素数,有以下结论: \(a^p \equiv a \pmod p\) 即费马小定理 \[C_{p}^i \equiv \begin{cases} 1 & i=0 ...