KubeSphere实战:利用kubekey快速部署高可用Kubernetes集群与KubeSphere平台

KubeKey一键安装部署k8s集群和KubeSphere详细教程 KubeKey是一个开源轻量级工具,采用go语言开发,用于部署Kubernetes集群。 阅读详情

1. 为什么你需要KubeSphere和kubekey?

如果你正在或者打算接触云原生,那你肯定绕不开Kubernetes。Kubernetes很强大,但实话实说,它也挺“劝退”的。光是那一堆YAML文件、各种抽象概念(Pod、Service、Ingress、PV/PVC),还有复杂的网络和存储配置,就足以让新手望而却步。我自己刚上手那会儿,光是搭建一个能用的集群就折腾了好几天,各种证书问题、网络不通、镜像拉取失败,踩坑踩到怀疑人生。

这时候,KubeSphere就出现了。你可以把它理解为一个给Kubernetes穿上的“漂亮外衣”和“智能管家”。它提供了一个非常直观的图形化控制台,把Kubernetes那些复杂的操作都封装成了点点鼠标、填填表单就能完成的事情。比如你想部署一个应用,在KubeSphere里,你不需要手写复杂的Deployment和Service YAML,通过它的“应用模板”或者“应用商店”,几步就能搞定。它还集成了很多企业级功能,比如多租户管理、监控告警(基于Prometheus)、日志查询(基于Elasticsearch)、DevOps流水线、服务网格(Istio)等等。简单说,有了KubeSphere,你和你的团队就能更专注于业务开发,而不是整天和kubectl命令较劲。

那kubekey又是干嘛的呢?它就是帮你把“搭建Kubernetes集群”和“安装KubeSphere平台”这两件麻烦事,变成“一键搞定”的神器。以前,我们要用kubeadm一步步初始化集群、安装网络插件、配置存储,然后再用Helm去部署KubeSphere,过程繁琐且容易出错。kubekey是KubeSphere官方用Go语言开发的集群生命周期管理工具,它把所有这些步骤都自动化了。你只需要准备好几台干净的Linux机器,写一个简单的配置文件,然后运行一条命令,它就能自动帮你完成从操作系统依赖检查、容器运行时安装、Kubernetes集群部署到KubeSphere平台安装的全过程。它支持高可用部署,也支持在已有的Kubernetes集群上单独安装KubeSphere,非常灵活。

所以,这套组合拳特别适合以下人群:想快速搭建云原生环境进行学习测试的开发者和学生;中小团队希望快速拥有一个功能完善、开箱即用的容器平台,而无需投入大量运维精力;以及需要频繁搭建和销毁集群的CI/CD测试场景。接下来,我就手把手带你走一遍实战流程。

2. 部署前的环境准备与规划

在按下那个“一键安装”按钮之前,充分的准备工作是成功的关键。这一步没做好,后面很可能就会卡在奇怪的错误上。根据我的经验,把环境理清楚,能省去至少80%的麻烦。

首先,我们需要准备机器。我强烈建议至少使用三台CentOS 7.9或Ubuntu 20.04 LTS的服务器(虚拟机或物理机均可)。为什么是三台?因为我们要搭建一个最小化的高可用集群。一台作为Master(控制平面),如果它挂了,整个集群就失联了,这显然不符合生产要求。使用三台,我们可以部署多Master节点,实现控制平面的高可用。这里我以三台机器为例,配置建议至少2核CPU、4GB内存、40GB磁盘。我的实验环境规划如下:

主机IP主机名角色
192.168.1.101ks-master-01主控制节点、etcd、工作节点
192.168.1.102ks-master-02控制节点、etcd、工作节点
192.168.1.103ks-master-03控制节点、etcd、工作节点

你可能注意到了,我把所有节点都同时当作控制节点和工作节点。这在资源有限的学习或测试环境中是完全可行的,kubekey也支持这种模式。在生产环境,通常会分离控制平面和工作节点。

接下来,我们需要在所有三台机器上执行一系列初始化命令。这些操作主要是为了满足Kubernetes运行的基础要求。

第一步,关闭防火墙和SELinux。 Kubernetes需要自己管理网络规则,系统防火墙可能会干扰其网络组件(如Calico、Flannel)的正常工作。执行以下命令:

# 关闭防火墙(临时生效)
systemctl stop firewalld
# 关闭防火墙(永久生效,重启后依然关闭)
systemctl disable firewalld
# 对于Ubuntu系统,通常是ufw: ufw disable

# 关闭SELinux(临时生效)
setenforce 0
# 关闭SELinux(永久生效,需要编辑配置文件后重启)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

第二步,关闭swap交换分区。 Kubernetes的设计理念是,当Pod内存不足时,应该被杀死并重新调度,而不是使用缓慢的磁盘交换空间,这会影响性能和稳定性。

# 临时关闭当前已启用的swap
swapoff -a
# 永久关闭,注释掉/etc/fstab中所有包含swap的行
sed -ri 's/.*swap.*/#&/' /etc/fstab

第三步,配置内核参数,将桥接的IPv4流量传递到iptables链。 这是为了让Kubernetes Service的流量转发正常工作。

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 使配置生效
sysctl --system

第四步,确保所有节点时间同步。 集群节点间时间不一致会导致证书错误、日志时间错乱等一系列诡异问题。

# 安装时间同步工具(CentOS)
yum install -y ntpdate
# 同步时间(可以换成国内的NTP服务器,如ntp.aliyun.com)
ntpdate time.windows.com
# 更推荐配置chronyd服务进行持续同步

第五步,安装容器运行时。 Kubernetes 1.20之后,Docker不再是唯一选择,但仍然是兼容性最好的。我们安装Docker并配置国内镜像加速。

# 安装yum工具包
yum install -y yum-utils
# 添加阿里云Docker仓库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装指定版本的Docker(这里安装较稳定的19.03版本)
yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io
# 启动并设置开机自启
systemctl enable docker --now
# 配置Docker镜像加速器
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://你的ID.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}
EOF
# 重启Docker使配置生效
systemctl restart docker

第六步,安装Kubernetes所需的系统依赖。

yum install -y socat conntrack ebtables ipset

最后,别忘了为每台机器设置一个唯一的主机名,并配置/etc/hosts文件,让它们能通过主机名互相解析。在所有节点上编辑/etc/hosts,添加:

192.168.1.101 ks-master-01
192.168.1.102 ks-master-02
192.168.1.103 ks-master-03

做完这些,我们的基础环境就准备好了。建议每执行完一步都检查一下是否成功,比如用docker version看看Docker是否安装正确。

3. 下载kubekey并生成集群配置

环境准备好后,我们就可以请出今天的主角——kubekey了。kubekey是一个单独的二进制文件,非常轻量。我们只需要在其中一台机器上操作(通常选第一个Master节点,也就是我们规划中的ks-master-01),它就会通过SSH连接到其他节点自动完成所有部署工作。

首先,我们下载kubekey。因为网络原因,直接从GitHub下载可能会很慢甚至失败。kubekey很贴心地提供了中国区的镜像下载方式。我们登录到ks-master-01节点,执行:

# 设置下载区域为中国,这个环境变量非常重要!
export KKZONE=cn
# 使用官方脚本下载最新稳定版的kubekey(截止到我写这篇文章时是v3.0.7)
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -

这条命令会自动下载对应系统架构的kk二进制文件。下载完成后,当前目录下会多出一个名为kk的文件。我们把它放到系统的可执行路径下,方便以后使用:

chmod +x kk
mv kk /usr/local/bin/
# 验证是否安装成功
kk version

如果看到输出版本信息,比如kubekey version v3.0.7,就说明安装成功了。

接下来,我们要创建集群的配置文件。这是整个部署过程中最关键的一步,你的集群长什么样,全由这个YAML文件定义。kubekey提供了非常方便的命令来生成配置模板:

# 创建一个包含Kubernetes v1.23.10和KubeSphere v3.3.2的配置模板
kk create config --with-kubernetes v1.23.10 --with-kubesphere v3.3.2

执行后,会在当前目录生成一个名为config-sample.yaml的文件。我们先用cat命令看一眼它的结构,然后用vim或你喜欢的编辑器打开它进行修改。

cat config-sample.yaml
vim config-sample.yaml

这个配置文件内容比较长,但我们需要修改的核心部分就几块。我挑重点说:

第一部分,spec.hosts: 这里列出了集群中的所有节点信息。你需要把模板里的示例IP和登录信息,替换成你自己机器的真实信息。

spec:
  hosts:
  - {name: ks-master-01, address: 192.168.1.101, internalAddress: 192.168.1.101, user: root, password: "YourNode101Password"}
  - {name: ks-master-02, address: 192.168.1.102, internalAddress: 192.168.1.102, user: root, password: "YourNode102Password"}
  - {name: ks-master-03, address: 192.168.1.103, internalAddress: 192.168.1.103, user: root, password: "YourNode103Password"}
  • name: 主机名,必须和之前设置的一致。
  • address: 外部可访问的IP,用于kubekey SSH连接。
  • internalAddress: 集群内部通信的IP,通常和address一样。
  • user和password: SSH登录的用户名和密码。强烈建议使用root用户,避免权限问题。如果你的机器使用密钥登录,可以配置privateKeyPath字段指定私钥路径。

第二部分,spec.roleGroups: 这里定义节点的角色。我们要搭建高可用集群,所以需要把三个节点都放入etcd、control-plane和worker组。

  roleGroups:
    etcd:
    - ks-master-01
    - ks-master-02
    - ks-master-03
    control-plane:
    - ks-master-01
    - ks-master-02
    - ks-master-03
    worker:
    - ks-master-01
    - ks-master-02
    - ks-master-03

这样配置意味着每个节点都身兼数职:既是存储集群状态的etcd成员,也是运行控制组件的控制平面,还是运行实际工作负载的工作节点。

第三部分,spec.controlPlaneEndpoint: 这是高可用集群的访问入口,也叫负载均衡器地址。在生产环境中,你需要在前端配置一个负载均衡器(如HAProxy、Nginx或云厂商的LB),将流量分发到后端的多个Master节点。在我们的实验环境中,可以暂时先用其中一个Master节点的IP和端口。注意,这个端口6443是Kubernetes API Server的默认端口。

  controlPlaneEndpoint:
    domain: lb.kubesphere.local # 域名,可自定义
    address: 192.168.1.101 # 暂时先用第一个master的IP,生产环境换成LB的IP
    port: 6443

第四部分,spec.kubernetes和spec.registry: 这里可以配置Kubernetes的版本、容器运行时类型(默认containerd,我们之前装了Docker,kubekey也能识别并适配)、网络插件(默认calico)等。一般保持默认即可。registry部分可以配置私有镜像仓库,如果从公有仓库拉取镜像慢,可以在这里配置镜像仓库镜像。

第五部分,spec.addons: 这里就是配置KubeSphere的地方!生成的模板里,KubeSphere默认是以“最小化”模式安装的,只包含核心功能。KubeSphere提供了多种可插拔的功能组件,你可以根据需要开启。

  addons:
  - name: kubesphere
    namespace: kubesphere-system
    sources:
      chart:
        name: kubesphere
        repo: https://charts.kubesphere.io/main
        valuesFile: /home/root/values.yaml # 这是一个指向自定义values文件的路径
    enabled: true
    overrideValues:
      common:
        etcd:
          monitoring: false
          endpointIps: 192.168.1.101,192.168.1.102,192.168.1.103 # 手动指定etcd节点IP
      alerting:
        enabled: false
      auditing:
        enabled: false
      devops:
        enabled: false
        jenkinsMemoryLim: 2Gi
      events:
        enabled: false
      logging:
        enabled: false
      metrics_server:
        enabled: false
      monitoring:
        storageClass: ""
      multicluster:
        clusterRole: none
      network:
        networkpolicy:
          enabled: false
        topology:
          type: none
      openpitrix:
        enabled: false
      servicemesh:
        enabled: false

如果你想体验KubeSphere完整的DevOps能力(CI/CD流水线)或服务网格(Istio),可以把devops.enabled或servicemesh.enabled改为true。不过要注意,开启这些组件会消耗更多的CPU和内存资源。第一次安装,我建议先保持最小化,成功进入控制台后再按需启用。

配置文件修改完成后,务必仔细检查几遍,尤其是IP地址、密码和角色分组,一个字符的错误都可能导致安装失败。

4. 一键启动安装与监控部署过程

最激动人心的时刻到了!前面所有的准备,都是为了这一刻的一条命令。在ks-master-01上,确保你还在存放config-sample.yaml文件的目录下,然后执行:

# 再次确保使用中国区,加速镜像拉取
export KKZONE=cn
# 开始创建集群,-f 指定配置文件,并用tee命令将日志同时输出到屏幕和文件
kk create cluster -f config-sample.yaml | tee kk-install.log

按下回车后,kubekey就正式开工了。屏幕上会开始滚动大量的日志信息,不要慌,这是它在按部就班地执行任务。整个过程完全是自动化的,主要包括以下几个阶段,你可以通过日志关键字来判断进度:

  1. 环境预检: kubekey会SSH连接到所有配置的节点,检查操作系统版本、内核参数、端口占用、依赖包、Docker版本等是否满足要求。如果这里报错,一定要根据提示解决,比如某个端口被占用,或者swap没关干净。
  2. 安装二进制文件: 在所有节点上安装kubeadm, kubelet, kubectl以及网络插件、存储插件等所需的二进制文件。
  3. 初始化集群: 在第一个控制节点(ks-master-01)上使用kubeadm初始化Kubernetes集群,并生成加入集群所需的令牌和证书。
  4. 加入控制节点: 将其他控制节点(ks-master-02, ks-master-03)加入到集群中,形成高可用的控制平面。
  5. 加入工作节点: 将所有工作节点加入到集群。
  6. 安装网络插件: 部署Calico(默认)或你指定的其他CNI插件,为Pod提供网络通信能力。
  7. 安装存储插件: 部署默认的存储类(通常是OpenEBS或NFS Provisioner),用于动态提供持久化存储。
  8. 安装KubeSphere: 这是最后也是最长的一个阶段。kubekey会使用Helm将KubeSphere的各种组件部署到kubesphere-system等命名空间下。你会看到很多Pod在创建、初始化。

整个过程视网络速度和机器性能,大概需要10到30分钟。期间可能会长时间停留在“Downloading images”或“Waiting for pod ready”,这是正常的,它在拉取大量的Docker镜像。一定要保持网络畅通,耐心等待。

一个非常重要的技巧:不要断开SSH连接! 如果因为网络波动导致连接断开,安装进程可能会中断。你可以使用screen或tmux工具来运行安装命令,这样即使终端断开,进程也会在后台继续执行。安装完成后,你会在日志的最后看到类似这样的成功信息:

#####################################################
###              Welcome to KubeSphere!           ###
#####################################################

Console: http://192.168.1.101:30880
Account: admin
Password: P@88w0rd

NOTES:
  1. After logging into the console, please check the
     monitoring status of service components in
     "Cluster Management". If any service is not
     ready, please wait patiently until all components
     are up and running.
  2. Please modify the default password after login.

恭喜!这表示你的高可用Kubernetes集群和KubeSphere平台已经部署成功了。日志里给出了控制台的访问地址、用户名和初始密码。请务必把这些信息保存好。

5. 登录验证与基础功能探索

现在,打开你的浏览器,输入http://192.168.1.101:30880(IP换成你的第一个Master节点IP)。你会看到KubeSphere的登录页面。用日志中提供的admin账号和密码登录。

第一次登录,系统会强制要求你修改一个高强度的密码,按照提示操作即可。修改成功后,你就正式进入了KubeSphere的炫丽控制台了!

首先,我建议你点开左上角的“平台管理”,进入“集群管理”。在这里,你可以看到我们刚刚搭建的集群(通常叫default)。点击集群名称,进入集群详情页。在“节点”标签下,你应该能看到ks-master-01、ks-master-02、ks-master-03三个节点,并且状态都是“运行中”。这证明我们的三节点高可用集群已经健康运行。

然后,你可以到“应用负载”下的“工作负载”里看看。这里会列出所有系统运行所需的Deployment和StatefulSet,比如KubeSphere自己的前端、后端、各种Operator等。刚开始可能有些Pod还在创建中,状态是“容器创建中”或“调度中”,稍等几分钟刷新一下,它们都会变成“运行中”。

接下来,我们体验一下KubeSphere最吸引人的功能之一:一键部署应用。我们不去写YAML文件。点击“应用”,选择“应用模板”。KubeSphere内置了一个应用商店,里面有很多预配置好的常见应用。我们找一个简单的来试试,比如部署一个nginx。

  1. 在应用模板页面,点击“创建”。
  2. 在弹出的对话框中,选择“来自应用模板”。
  3. 在搜索框输入nginx,你会看到来自Bitnami等仓库的Nginx Chart。
  4. 点击一个Nginx模板,进入部署页面。这里你可以修改应用名称(比如my-nginx)、选择部署的集群和项目(命名空间)。
  5. 大部分配置都可以保持默认,直接滚动到最下面,点击“部署”。
  6. 部署完成后,你可以在“应用”列表里找到my-nginx。点击进入详情,可以看到它创建了一个Deployment和一个Service。
  7. 为了让外部能访问,我们需要创建一个“网关”(Ingress Controller)。KubeSphere默认已经安装了基于Nginx的Ingress Controller。在应用详情页,点击“服务”,找到对应的Service,点击“更多操作”,选择“编辑外部访问”。
  8. 将访问模式改为NodePort或Ingress。如果选NodePort,系统会自动分配一个端口(如30080),你就可以通过http://<节点IP>:30080访问Nginx欢迎页了。如果选Ingress,你需要配置一个域名规则。

通过这个简单的流程,你应该能感受到KubeSphere带来的便捷。它把Kubernetes资源对象的概念,封装成了更贴近运维和开发视角的“应用”、“服务”、“网关”,大大降低了操作门槛。

6. 集群的日常运维与扩缩容技巧

集群搭起来只是第一步,后续的运维管理才是重头戏。kubekey不仅在安装时给力,在日常运维中也提供了非常方便的命令。

首先,如何查看安装日志或排查问题? 如果在安装KubeSphere时某个组件一直不健康,我们可以查看安装器的详细日志:

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-installer -o jsonpath='{.items[0].metadata.name}') -f

这条命令会实时跟踪ks-installer这个Pod的日志,里面会详细记录每个KubeSphere组件的安装状态和错误信息,是排障的利器。

其次,如何给集群添加新的工作节点? 业务增长了,需要扩容。首先,你需要准备一台新的、已经完成“环境准备”部分所有步骤的干净机器。然后,编辑之前的config-sample.yaml文件,在spec.hosts部分添加新节点的信息,并在spec.roleGroups.worker列表中加入新节点的名字。保存文件后,执行:

kk add nodes -f config-sample.yaml

kubekey就会自动将新节点加入到集群中,并安装所有必要的组件。非常优雅。

那么,如何安全地移除一个节点呢? 比如某个节点硬件故障需要下线。首先,确保该节点上运行的所有Pod已经被驱逐到其他节点(Kubernetes会自动处理)。然后执行:

kk delete node <节点主机名> -f config-sample.yaml

kubekey会安全地将该节点从集群中移除。

集群升级怎么办? Kubernetes和KubeSphere的版本迭代很快,安全补丁和新功能都需要升级。kubekey支持一键升级。但升级前务必在测试环境验证,并备份重要数据! 升级命令类似这样:

# 升级到指定的Kubernetes和KubeSphere版本
kk upgrade --with-kubernetes v1.24.6 --with-kubesphere v3.3.2 -f config-sample.yaml

升级过程是滚动进行的,会尽量保证业务不中断,但依然存在风险,请谨慎操作。

最后,如果我想推倒重来怎么办? 对于测试环境,我们经常需要销毁集群。kubekey提供了完整的集群删除功能:

kk delete cluster -f config-sample.yaml

这条命令会清理所有节点上的Kubernetes和KubeSphere组件,但不会删除你通过持久卷存储的数据,也不会卸载Docker。执行前请三思。

关于KubeSphere本身的功能开启,比如你想启用DevOps功能。不需要重新安装。登录控制台后,进入“集群管理”,点击“CRD”,搜索ClusterConfiguration,找到ks-installer对应的那个,点击进入详情,选择“编辑YAML”。在spec部分找到devops.enabled,将其改为true,保存。系统会自动开始安装Jenkins、SonarQube等DevOps组件,你可以在“组件管理”中查看安装进度。

7. 避坑指南与常见问题处理

踩坑是学习技术的必经之路。这里我分享几个在部署和使用过程中最容易遇到的问题和解决办法,希望能帮你节省大量时间。

坑一:镜像拉取失败或超时。 这是最常见的问题,表现为Pod状态一直是ImagePullBackOff或ErrImagePull。根本原因是网络问题,无法从k8s.gcr.io、docker.io等国外仓库拉取镜像。

  • 解决办法: 这正是我们在安装前设置export KKZONE=cn的原因,kubekey会自动使用国内的镜像仓库镜像。如果安装后某些特定镜像还是拉取失败,可以考虑在节点上配置Docker的镜像加速器,或者使用docker pull命令手动从阿里云等国内仓库拉取镜像,然后重新打标签。例如:docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6。

坑二:节点NotReady。 安装完成后,在KubeSphere控制台或执行kubectl get nodes发现节点状态不是Ready。

  • 排查思路:
    1. 检查网络插件Pod是否运行正常:kubectl get pods -n kube-system | grep calico(或flannel)。
    2. 检查kubelet服务是否正常运行:在问题节点上执行systemctl status kubelet。如果报错,查看日志journalctl -xeu kubelet。常见原因是证书问题、cgroup驱动不一致(我们之前在Docker配置中设置了systemd就是为了避免这个)或者二进制文件路径错误。
    3. 检查节点内存或磁盘压力是否过大:kubectl describe node <节点名>,看Conditions部分是否有MemoryPressure或DiskPressure。

坑三:KubeSphere控制台无法访问(30880端口不通)。

  • 排查思路:
    1. 首先确认ks-console这个Pod是否运行正常:kubectl get pods -n kubesphere-system | grep console。
    2. 检查对应的Service和Ingress资源:kubectl get svc,ing -n kubesphere-system。
    3. 检查节点防火墙是否关闭(我们第一步就做了)。有时云服务商的安全组规则也会拦截30880端口,需要去云控制台放行该端口。
    4. 如果使用的是NodePort方式,确认你访问的IP和端口是否正确。可以用kubectl get svc ks-console -n kubesphere-system查看分配的NodePort是多少。

坑四:存储配置问题,Pod提示“Pending”,原因是“waiting for a volume to be created”。

  • 解决办法: 这通常是动态存储供给(StorageClass)没有配置或配置不正确。安装后,执行kubectl get storageclass,看是否有默认的StorageClass且状态是Default。如果没有,你需要根据你的环境(本地、NFS、云盘)部署对应的存储插件。KubeSphere文档提供了多种存储方案的安装指南。

坑五:忘记KubeSphere的admin密码。

  • 解决办法: 可以通过命令行重置。首先,确保你能用kubectl访问集群。然后执行以下命令:
    kubectl -n kubesphere-system get secret ks-admin -o jsonpath='{.data.password}' | base64 -d
    
    这会解密并打印出初始的admin密码。如果初始密码也被修改了,你可以通过修改Kubernetes Secret来重置:
    # 设置一个新密码,比如`NewP@ssw0rd`
    kubectl -n kubesphere-system patch secret ks-admin --type='json' -p='[{"op": "replace", "path": "/data/password", "value": "$(echo -n 'NewP@ssw0rd' | base64)"}]'
    

记住,遇到问题多查日志(kubectl logs和kubectl describe是你最好的朋友),善用KubeSphere控制台提供的可视化监控和事件查看功能,大部分问题都能定位到根源。

KubeKey 与 KubeSphere:快速构建 Kubernetes 集群 基于 Ansible 的安装程序具有大量软件依赖性,例如 Python。KubeKey 是使用 Go 语言开发的,可以消除在各种环境中出现的问题,从而提高安装成功率。KubeKey 使用 Kubeadm 在节点上尽可能多地并行安装 K8s 集群,以降低安装复杂性并提高效率。与较早的安装程序相比,它将大大节省安装时间。KubeKey 支持将集群从 all-in-one 扩展到多节点集群甚至 HA 集群。KubeKey 旨在将集群当作一个对象操作,即 CaaO。 阅读详情

相关推荐

使用 kubekey 搭建 k8s 集群 及 kubeSphere

本文介绍了使用KubeKey工具部署Kubernetes集群和KubeSphere平台的方法。KubeSphere是基于Kubernetes构建的开源多租户容器管理平台,提供简化操作界面。文章详细说明了三节点集群的安装架构(1个master节点和2个worker节点),并提供了初始化环境的完整步骤,包括设置主机名、配置hosts文件、网络测试、关闭防火墙、禁用SELinux以及关闭swap分区等准备工作。通过KubeKey可以快速部署Kubernetes集群并集成KubeSphere管理平台,降低云原生应用

꯭ 瞎꯭扯꯭蛋꯭的博客 1503

如何使用 KubeKey 部署一个包含两个节点(一个 Master,一个 Worker)的集群

kubekey 初始化 k8s集群

qq_37106501的博客 752

KubeSphere 和 K8s 高可用集群离线部署全攻略

本文首发:运维有术,作者术哥。今天,我们将一起探索如何在离线环境中部署 K8s v1.30.6 和 KubeSphere v4.1.2 高可用集群。对于离线环境的镜像仓库管理,官方推荐使用 Harbor 作为镜像仓库管理工具,它为企业级用户提供了高效、安全的镜像存储方案。而在本指南中,我们将以 Docker Registry 作为镜像仓库示例,展示如何实现离线部署。如果您更倾向于使用 Harbor,请参考官方文档 KubeSphere 离线安装文档 获取具体的 Harbor 部署方式。通过本文的指导,您将掌

KubeSphere 2952

kubekey一键部署k8s高可用与kubesphere

kubekey一键部署k8s高可用与kubesphere

johnhuster的专栏 638

用 KubeKey 快速离线部署 K8s 与 KubeSphere

作者:尹珉,KubeSphere Ambassador,KubeSphere 社区用户委员会杭州站站长 一、KubeKey 介绍 KubeKey(以下简称 KK) 是一个用于部署 Kubernetes 集群的开源轻量级工具。它提供了一种灵活、快速、便捷的方式来仅安装 Kubernetes/K3s,或同时安装 Kubernetes/K3s 和 KubeSphere,以及其他云原生插件。除此之外,它也是扩展和升级集群的有效工具。 KubeKey v2.0.0 版本新增了清单(manifest)和制品(a.

KubeSphere 3100

一文搞定 KubeKey 3.1.1 离线部署 KubeSphere 3.4.1 和 Kubernetes v1.28

本文将详细介绍,如何基于操作系统,利用 KubeKey 制作 KubeSphere 和 Kubernetes 离线安装包,并实战部署和集群。

KubeSphere 2289

(一) 在 vSphere 部署高可用的 KubeSphere 3.0 -公测版

文章目录在 vSphere 部署高可用的 KubeSphere1. 前提条件2. 部署架构3. 创建主机4. 部署 keepalived+haproxy1. yum 安装2. 配置 haproxy3. 配置 keepalived4. 验证可用性5. 获取安装程序可执行文件6. 创建多节点群集1. kubekey 部署 k8s 集群2. 多集群配置3. 输出结果 在 vSphere 部署高可用的 KubeSphere 对于生产环境,我们需要考虑集群的高可用性。如果关键组件(例如 kube-apiserver

随笔记录-分享&记忆 1454

KubeKey 升级 KubeSphere 和 (k8s)Kubernetes 补丁版本实战指南

KubeSphere v3.4.1 已于 2023 年 11 月 10 日正式发布,升级说明详见 Releases-v3.4.1 发布说明。该发布版修复了 v3.4.0 中存在的许多问题,建议所有人更新。KubeSphere 官方的升级文档 操作比较简单。但是,实际升级过程还是遇到 2 个小问题。正好借此机会,写一篇完整版的 KubeSphere 和 Kubernetes补丁版本升级完全实战指南。为什么强调补丁版本?这里就要简单点介绍一下 Kubernetes 版本命名规则及升级策略。

Richardlygo的博客 1715

kubesphere快速部署nacos

Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。修改成你自己的Nacos地址并上传到自己的git,这里是K8S跨名称空间连接服务,格式:服务名.名称空间.svc.cluster.local:端口号。以相同的方式把service_one和service_two服务构建镜像,并上传镜像。填入自己的代码链接和分支,镜像名称和版本,以及刚才创建自己的dockerhub-id。填写服务名,容器端口号,和服务端口,点击√,然后next。

misteruly的博客 1963

kubekey快速安装高可用k8s集群

KubeKey KubeKey(由 Go 语言开发)是一种全新的安装工具,替代了以前使用的基于 ansible 的安装程序。KubeKey 为您提供灵活的安装选择,您可以仅安装 Kubernetes,也可以同时安装 Kubernetes 和 KubeSphere。 KubeKey 的几种使用场景: 仅安装 Kubernetes; 使用一个命令同时安装 Kubernetes 和 KubeSphere; 扩缩集群; 升级集群; 安装 Kubernetes 相关的插件(Chart 或 YAML)。 项目地.

琦彦 7434

ESP-CSI:使用ESP32进行CSI(信道状态信息)采集

使用esp32进行csi(信道状态信息)采集和处理

capsize的博客 8284

KubeSphere - 使用 kubekey 搭建 k8s 集群 及 kubeSphere

一、kubekey kubeykey是KubeSphere基于Go 语言开发的kubernetes集群部署工具,使用 KubeKey,您可以轻松、高效、灵活地单独或整体安装 Kubernetes 和KubeSphere。 KubeKey可以用于以下三种安装场景: 仅安装 Kubernetes集群 使用一个命令安装 Kubernetes 和 KubeSphere 已有Kubernetes集群,使用ks-installer 在其上部署 KubeSphere。 官网地址:https://kubesphere.i

小毕超博客 9486

在安装之后使用labelme出现qtpy.PythonQtError:No Qt bindings could be found错误

我在base环境(python3.7)可成功安装和使用labelme,而在同py37版本和py36的虚拟环境中可安装labelme包,但在使用的时候出现报错,如下: 我尝试着去解决第一个错误提示,错误提示为:moduleNotFoundError:No module named ‘PySide’,结果掉入了一个无止无尽的坑,看到网上有朋友说这个只能在py27-py35才能安装,还有说需要VC+ 140等,他们说的这个解决方案只针对于这个缺包的描述,而我们仅仅只需要一个labelme,因此我直接对后面的错误

qq_33538651的博客 9818

KubeSphere部署安装,接入KubeKey安装的k8s集群

KubeSphere安装接入KubeKey安装的k8s集群,包括NFS安装配置

ζั͡山 ั͡有扶苏 ั͡✾的博客 2600

在Mac下配置用VSCode编写C/C++程序的环境

前言    最近需要编写一些C/C++程序,由于体量都不是很大所以想要追求一个轻量化的编辑和编译环境,于是想起了在Dock栏吃灰的VSCode。通过查找资料,包括VSCode的官方文档,最终配置实现了Mac下基于VSCode的C/C++编辑环境搭建。 正文    在配置环境之前先检查一下机器上都安装了什么C++编译器,通过以下两条命令可以查看是否安装了g++/clang编译器,本人两种编...

Kalikali的专栏 5万+

Nvivo12新手避坑指南:从安装到编码的完整流程(附实战案例)

本文为Nvivo12新手提供了从软件安装、初始设置到数据导入和编码分析的完整避坑指南。通过一个“校园欺凌现象的学生访谈研究”实战案例,详细拆解了处理中文文本、创建项目结构、执行手动编码及高级查询等关键步骤,帮助研究者避开常见错误,快速上手并高效完成质性数据分析。

resnet7explorer的博客 319

基于 KubeKey 3.1.9,快速部署 K8s 1.33.0 高可用集群

至此,基于 KubeKey 3.1.9 与 K8s 1.33.0 的完整安装部署流程已全部完成,结合 KubeSphere 提供的管理能力,企业可实现更高效、更可控的云原生平台建设。后续可根据业务需求进行扩展配置和二次优化。

KubeSphere 1903

manimgl安装

安装manimgl

happytree001的博客 709

kubekey部署kubernetes集群

kubekey简介 kubeykey是KubeSphere基于Go 语言开发的kubernetes集群部署程序。使用 KubeKey,您可以轻松、高效、灵活地单独或整体安装 Kubernetes 和 KubeSphere。 有三种情况可以使用 KubeKey。 仅安装 Kubernetes 使用一个命令安装 Kubernetes 和 KubeSphere 首先安装 Kubernetes,然后使用ks-installer 在其上部署 KubeSphere 重要提示:Kubekey 将会帮您安装 Kuber

IT 9863

“华为杯”研究生数学建模竞赛2019年-【华为杯】D题:汽车行驶工况构建(附获奖论文和MATLAB代码实现)

映了汽车道路行驶的运动学特征。准差、加速度标准差这九个特征参数用于后续的数据分析,建立了合理的汽车运动特征评。特征参数与所属类特征参数的特征值的相关性大小替代误差进行排序的,计算得到汽车行。对于问题一,我们首先对原始数据进行了时间变量转换,将原本的年月日时分秒的计。紧接着进行了运动学片段的划分,引入九个特征参数,通过主成分分析、本文研究的是汽车行驶工况构建,汽车行驶工况是描述汽车行驶的速度。的合理性评价标准,对两种方法都进行了合理性评价,得到的。进行了合理性评价,得到了最优的汽车行驶工况曲线。

getusushu的博客 1004

FFMPEG音视频开发: Linux下采集音频(alsa-lib库)、视频(V4L2框架)数据编码并实时推流到RTMP流媒体服务器,达到直播功能(推流)

一、环境介绍 操作系统: VM虚拟机运行的ubuntu18.04 FFMPEG版本: 4.4.2 摄像头: 罗技USB摄像头、电脑自带摄像头 声卡:电脑自带声卡 二、FFMPEG、X264的安装 参考这里:FFMPEG开发: Linux下采集摄像头数据录制成MP4视频保存到本: 地https://blog.youkuaiyun.com/xiaolong1126626497/article/d...

2993

kubekey 离线安装harbor、k8s、kubesphere

参考文献。

mengo的博客 4665

杰理 JL701N/JL703N USB MIDI 使用教程

摘要:本教程介绍如何在杰理JL701N/JL703N音箱的可视化SDK中配置USB MIDI功能。主要步骤包括:1)启用PC模式;2)修改SDK宏定义启用USB MIDI;3)实现MIDI数据接收处理逻辑;4)调用接口发送MIDI数据;5)使用MIDI-OX测试功能。针对低版本SDK可能出现的设备识别问题,提供了在midi.c文件中添加特定代码行的解决方案。使用前需确保SDK版本达标,并注意备份原始文件。

qq_42014563的博客 1269

KubeKey一键部署:轻松安装Kubernetes与KubeSphere

本文主要参考“”进行实践测试部署。通过KubeKey工具实现Kubernetes(k8s)和KubeSphere的一键式安装,极大地简化了安装过程。通过以上步骤,用户可以轻松完成Kubernetes和KubeSphere的安装,无需深入了解复杂的安装过程。

冲冲冲 4387

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

使用kubekey部署k8s集群和kubesphere、在已有k8s集群上部署kubesphere

本篇以kubesphere v3.3.0版本讲解。kubesphere 愿景是打造一个以 kubernetes 为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)的集成,支持云原生应用在多云与多集群的统一分发和运维管理。

MssGuo的博客 5254

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 为什么深度学习中常用PFM格式?从Middlebury数据集看浮点图像存储优势
下一篇: Allegro焊盘设计避坑指南:为什么你的热风焊盘总是不显示?
Python
博客等级 码龄26年 1973粉丝 1567原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值