部署kubesphere

2024-08-21 18:20
文章标签 部署 kubesphere

本文主要是介绍部署kubesphere,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

部署kubesphere

1.部署kubernetes

https://github.com/easzlab/kubeasz

1.1环境初始化

  • 关闭防火墙
  • 如果是centos系统要关闭seLinux
  • 时间同步
  • master节点和node节点做免密
  • 安装ansible

2.2在部署节点准备安装k8s的资源

2.2.1 下载二进制包和离线镜像源
export release=3.6.2
wget https://github.com/easzlab/kubeasz/releases/download/${release}/ezdown
chmod +x ./ezdown1、安装docker
./ezdown -D docker2、配置docker镜像代理仓库
root@k8s-master-1:~# cat /etc/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.io
[Service]
Environment="PATH=/opt/kube/bin:/bin:/sbin:/usr/bin:/usr/sbin"
ExecStart=/opt/kube/bin/dockerd
ExecStartPost=/sbin/iptables -I FORWARD -s 0.0.0.0/0 -j ACCEPT
Environment=HTTP_PROXY=http://$proxy_ip                           #添加
Environment=HTTPS_PROXY=http://$proxy_ip                         #添加
Environment=NO_PROXY=localhost,127.0.0.1,easzlab.io.local                #添加(如果不添加后期会提示镜像无法上传到镜像仓库)
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
RestartSec=5
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
2.2.2 创建k8s集群
#进入到ezctl文件所在的目录执行创建命令
ezctl new k8s-01
修改 /etc/kubeasz/clusters/k8s-01/hosts' 和 '/etc/kubeasz/clusters/k8s-01/config.yml':根据前面节点规划修改hosts 文件和其他集群层面的主要配置选项;其他集群组件等配置项可以在config.yml 文件中修改。
#部署k8s
ezctl setup k8s-01 all
2.2.3 验证集群是否部署成功

在这里插入图片描述
这里我只是回顾下,至于/etc/kubeasz/clusters/k8s-01/hosts’ 和 '/etc/kubeasz/clusters/k8s-01/config.yml文件如何修改,可以参考我前面的博客,里面介绍的很详细

2.2.4 部署nerdctl工具

因为k8s 1.24以上版本就不支持使用docker改用containerd,但是containerd的客户端命令不好用,故部署第三方的客户端工具,以便后续的操作。

root@k8s-master-1:~/nerdctl# ll
total 73312
drwxr-xr-x 2 root root     4096 Aug 21 03:18 ./
drwx------ 9 root root     4096 Aug 21 05:36 ../
-rw-r--r-- 1 root root      202 Aug 21 03:17 buildkit.service
-rw-r--r-- 1 root root 65775728 Aug 21 03:17 buildkit-v0.12.5.linux-amd64.tar.gz
-rwxr-xr-x 1 root root    21622 Jul 31  2023 containerd-rootless-setuptool.sh*
-rwxr-xr-x 1 root root     7187 Jul 31  2023 containerd-rootless.sh*
-rwxr-xr-x 1 root root      827 Aug 21 03:17 install_nerdctl.sh*
-rw-r--r-- 1 root root  9242800 Aug 21 03:17 nerdctl-1.5.0-linux-amd64.tar.gzroot@k8s-master-1:~/nerdctl# cat buildkit.service
[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit[Service]
ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true
[Install]
WantedBy=multi-user.targetroot@k8s-master-1:~/nerdctl# cat install_nerdctl.sh
#!/bin/bash
# 安装 nerdctl
function install_nerdctl() {mkdir -p /usr/local/containerd/bin/tar -xvf ./nerdctl-1.5.0-linux-amd64.tar.gzmv ./nerdctl /usr/local/containerd/bin/ln -s /usr/local/containerd/bin/nerdctl /usr/local/bin/nerdctl
}# 安装 buildkit
function install_buildkit() {mkdir -p /usr/local/buildctltar -zxvf ./buildkit-v0.12.5.linux-amd64.tar.gz -C /usr/local/buildctlln -s /usr/local/buildctl/bin/buildkitd /usr/local/bin/buildkitdln -s /usr/local/buildctl/bin/buildctl /usr/local/bin/buildctlcp ./buildkit.service  /etc/systemd/system/buildkit.servicesystemctl daemon-reloadsystemctl enable buildkit --now
}
# 主函数
function main() {install_nerdctlinstall_buildkit
}
# 调用主函数
main

2.部署kubesphere

2.1部署nfs共享存储目录

apt -y install nfs-server
echo "/data/kubesphere *(rw,sync,no_root_squash)" >> /etc/exports
systemctl restart nfs-server
#验证
showmount -e 192.168.4.253

2.2 部署nfs-storageclass

root@k8s-master-1:~/kubesphere# cat nfs-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:name: nfs-client
provisioner: k8s-sigs.io/nfs-subdir-external-provisioner # or choose another name, must match deployment's env PROVISIONER_NAME'
parameters:archiveOnDelete: "false"root@k8s-master-1:~/kubesphere# cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nfs-client-provisionerlabels:app: nfs-client-provisioner
spec:replicas: 2strategy:type: Recreateselector:matchLabels:app: nfs-client-provisionertemplate:metadata:labels:app: nfs-client-provisionerspec:serviceAccountName: nfs-client-provisionercontainers:- name: nfs-client-provisionerimage: registry.cn-hangzhou.aliyuncs.com/qinge/nfs-subdir-external-provisioner:v1volumeMounts:- name: nfs-client-rootmountPath: /persistentvolumesenv:- name: PROVISIONER_NAMEvalue: k8s-sigs.io/nfs-subdir-external-provisioner- name: NFS_SERVERvalue: 192.168.4.253- name: NFS_PATHvalue: /data/kubespherevolumes:- name: nfs-client-rootnfs:server: 192.168.4.253   #nfs服务地址path: /data/kubesphere          #共享目录root@k8s-master-1:~/kubesphere# cat rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: nfs-client-provisioner-runner
rules:
- apiGroups: [""]resources: ["persistentvolumes"]verbs: ["get", "list", "watch", "create", "delete"]
- apiGroups: [""]resources: ["persistentvolumeclaims"]verbs: ["get", "list", "watch", "update"]
- apiGroups: ["storage.k8s.io"]resources: ["storageclasses"]verbs: ["get", "list", "watch"]
- apiGroups: [""]resources: ["events"]verbs: ["create", "update", "patch"]---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: run-nfs-client-provisioner
subjects:
- kind: ServiceAccountname: nfs-client-provisionernamespace: default  # 确保这里的namespace与你的nfs-client-provisioner服务账户所在的namespace相匹配
roleRef:kind: ClusterRolename: nfs-client-provisioner-runnerapiGroup: rbac.authorization.k8s.ioroot@k8s-master-1:~/kubesphere# kubectl get pod
NAME                                      READY   STATUS    RESTARTS   AGE
nfs-client-provisioner-664ff76565-krktp   1/1     Running   0          101m
nfs-client-provisioner-664ff76565-ljjmq   1/1     Running   0          101m

2.3把部署的nfs-storageclass设置成默认的Storageclass

kubectl patch storageclass nfs-client -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

在这里插入图片描述

2.4下载kubesphere的资源并部署

wget https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/kubesphere-installer.yaml
wget apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.4.1/cluster-configuration.yaml
kubectl apply -f kubesphere-installer.yaml
kubectl apply -f cluster-configuration.yaml#查看部署的进度
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

在这里插入图片描述

当pod全部部署成功后,此时就可以在浏览直接访问任意节点的30880端口了,默认用户名/密码:admin/P@88w0rd

在这里插入图片描述

2.5 添加应用商店

在定制资源定义中搜索ClusterConfiguration支持模糊搜索写clusterconfig或则cluster都可以只要找对就行

在这里插入图片描述
在这里插入图片描述

然后在执行kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l ‘app in (ks-install, ks-installer)’ -o jsonpath=‘{.items[0].metadata.name}’) -f查看应用商店的部署进度

在这里插入图片描述

3.部署遇到的挂载

  • 因为环境之前部署过rancher等其他服务,导致环境不干净,部署kubesphere一直提示保错10.10.0.1:443端口无法被访问

排查思路:

1、这个是k8s集群内部的访问api接口,首先查看calico相关pod的运行状态是否正常

2、calico组件运行都是正常的,我又查看了kube-proxy组件是否正常,经过一番检查发现都是没问题,我就怀疑是我环境有问题,直接把集群销毁,重新部署(我这里的环境此时还没有装任何服务),发现问题没有了

  • 自动创建的pvc一直处于pending状态中,查看sc也是正常的,这时想起来之前也遇到类似的事,是nfs-Storageclass的版本和k8s的版本不兼容导致的,结果没有出乎意外就是这个问题,重新部署nfs-storageclass就解决了

在这里插入图片描述

这篇关于部署kubesphere的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093928

相关文章

Nginx部署HTTP/3的实现步骤

《Nginx部署HTTP/3的实现步骤》本文介绍了在Nginx中部署HTTP/3的详细步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前提条件第一步:安装必要的依赖库第二步:获取并构建 BoringSSL第三步:获取 Nginx

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

Linux部署中的文件大小写问题的解决方案

《Linux部署中的文件大小写问题的解决方案》在本地开发环境(Windows/macOS)一切正常,但部署到Linux服务器后出现模块加载错误,核心原因是Linux文件系统严格区分大小写,所以本文给大... 目录问题背景解决方案配置要求问题背景在本地开发环境(Windows/MACOS)一切正常,但部署到

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA