准备
- centos7.9 下载地址:Download
- sealos 下载地址:https://github.com/labring/sealos
- nginx 下载地址:nginx: download
- laf 官网地址:https://lafjs.github.io/
- 本文只讲部署,不讲laf如何使用
安装centos
- 准备4台(虚拟机)
- 安装Centos7.9
- 系统要纯净
- 系统中不要安装docker(k8s从v1.23.2,不再支持 docker ,容器运行时使用了 containerd)
- 安装好vim
- 安装好wget
- 安装好git
- 4台主机的用户名必须是root,密码必须是一样的,这里设置为(123456a?)
- 关闭selinux
- 关闭firewalld
- 安装过程省略
配置CentOs
- 设置四台机器ip:172.16.100.101、172.16.100.102、172.16.100.103、172.16.100.104
- 设置四台机器hostname:dhl101.dhl.com、dhl102.dhl.com、dhl103.dhl.com、dhl104.dhl.com
- 更改四台机器的host文件,使四台机器可以通过域名互相访问
- DNS1服务器更改为114.114.114.114,这一步是确保能够解析nio.ip的域名
- 确保这4台服务器处于启动状态
- 确保4台服务器时间同步
- 主机关闭代理! 一定关闭代理!!!否则nio.ip可能解析出问题!
172.16.100.101 dhl101.dhl.com
172.16.100.102 dhl102.dhl.com
172.16.100.103 dhl103.dhl.com
172.16.100.104 dhl104.dhl.com
vim软件安装如下:
yum install wget vim git -y
安装kubernetes(k8s)
1. 使用ssh工具连接172.16.100.101服务器
2. 执行下面的代码,并等待完成
wget https://github.com/labring/sealos/releases/download/v4.0.0/sealos_4.0.0_linux_amd64.tar.gz && tar zxvf sealos_4.0.0_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin
3. 执行下面的代码,并等待完成。注意-p 后面跟的是linux主机的密码
sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1 \
--masters 172.16.100.101 \
--nodes 172.16.100.102,172.16.100.103 -p 123456a?
这一步会下载2个文件,一个400M+一个700M+如果网络不好会比较慢,须要耐心等待完成。安装完成后会出现大大的SEALOS的logo,但是出现logo不一定成功,你一定要查看一下输出日志,有没有错误提示
4. 检查k8s集群状态
[root@dhl101 conf]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
dhl101.dhl.com Ready control-plane 42h v1.24.0
dhl102.dhl.com Ready <none> 42h v1.24.0
dhl103.dhl.com Ready <none> 42h v1.24.0
5. 如果不是Ready状态,可能需要多等待一会。如果状态变为Ready,就说明已经就绪了
还可以查看下k8s命名空间:
[root@dhl101 conf]# kubectl get ns
安装laf
- 打开git地址:https://github.com/labring/laf
- 打开本地部署文档:https://github.com/labring/laf/blob/main/deploy/README.md
- 克隆代码:git clone https://github.com/labring/laf.git,生产机我们不建议这样使用,推荐下载已经归档的版本,我们使用v0.8.6版本。这里使用:https://github.com/labring/laf/archive/refs/tags/v0.8.6.tar.gz
- 解压下载的laf(git clone的没有这一步):
tar -zxvf laf-0.8.6.tar.gz
解压完成后会出现 laf-0.8.6的文件夹,我们到kubernetes目录下
cd laf-0.8.6/deploy/kubernetes/
查看一下文件:
[root@dhl101 kubernetes]# ll
总用量 48
-rw-rw-r-- 1 root root 417 8月 8 19:13 0-namespace.yml
-rw-rw-r-- 1 root root 987 8月 8 19:13 app-console.yml
-rw-rw-r-- 1 root root 1740 9月 20 10:29 config.yml
-rw-rw-r-- 1 root root 5304 9月 20 10:29 ingress.yml
-rw-rw-r-- 1 root root 3156 8月 8 19:13 instance-controller.yml
-rw-rw-r-- 1 root root 1682 8月 8 19:13 mongo.yml
-rw-rw-r-- 1 root root 2072 8月 8 19:13 oss.yml
-rw-rw-r-- 1 root root 520 8月 8 19:13 README.md
-rw-rw-r-- 1 root root 989 8月 8 19:13 sys-console.yml
-rw-rw-r-- 1 root root 4705 8月 8 19:13 sys.yml
[root@dhl101 kubernetes]#
5. 修改配置文件
使用vim命令修改文件
vim config.yml
批量替换127-0-0-1为172.16.100.104,后保存退出,vim是批量替换命令如下:
%s/127-0-0-1/172-16-100-104/gi
vim ingress.yml
批量替换127-0-0-1为172.16.100.104,后保存退出,vim是批量替换命令如下:
%s/127-0-0-1/172-16-100-104/gi
安装helm
# install helm
sealos run labring/helm:v3.8.2
# install ingress-nginx
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx
部署laf,注意执行过程有没有错误输出,如果没有错误输出就需要耐心等待,这一步花费时间较长
kubectl apply -f .
我们监控下部署进度
[root@dhl101 kubernetes]# kubectl get pods -n laf
NAME READY STATUS RESTARTS AGE
app-console-5f4685b8f-nfgqg 1/1 Running 2 (133m ago) 24h
instance-controller-86f6994b4b-clsnp 1/1 Running 7 (133m ago) 24h
mongo-0 1/1 Running 2 (133m ago) 24h
oss-0 1/1 Running 2 (133m ago) 24h
sys-console-5c667d49c7-5d9kv 1/1 Running 2 (133m ago) 24h
system-server-76b464656d-j586v 1/1 Running 2 (133m ago) 24h
[root@dhl101 kubernetes]#
状态必须都是Running状态才算成功,否则就耐心等待。
9. 第8步成功后查看服务:
[root@dhl101 kubernetes]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.96.3.51 <pending> 80:32672/TCP,443:31010/TCP 26h
ingress-nginx-controller-admission ClusterIP 10.96.1.83 <none> 443/TCP 26h
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 42h
[root@dhl101 kubernetes]#
这里注意ingress-nginx-controller的端口 80:32672/TCP,443:31010/TCP,我们使用这个端口在浏览器访问
http://console.172-16-100-101.nip.io:32672/
常见问题
这里是引用官方的常见问题
1. Console 响应 502 怎么办? a. 是否通过 IP 访问?laf 强依赖域名,不能通过 IP 访问
2. 无法连接数据库? a. 查看 mongodb 日志:docker-compose logs -f mongodb,看是否启动成功? b. 苹果 M1 芯片暂不支持 mongo 5.0,需要修改为 4.4 版本:bitnami/mongodb:4.4.13 c. 部分老 intel 处理器不支持 mongo 5,需要修改为 4.4 版本:bitnami/mongodb:4.4.13 d. 可能由于 MongoDb 首次启动初始化时间较长,导致其它服务连接超时,尝试重启服务
3. 通过下面命令尝试重启所有服务
kubectl delete -f .
kubectl apply -f .
实测此时可以注册,登录系统,很多功能可以正常使用,但是云云函数是无法引用的:下面框住的部分会报404错误:
当然发布的云函数也是无法访问的:
接下来我们解决这个问题。我们在外面增加一个nginx来反向代理我们laf云平台.
部署nginx
1. 下载nginx源码:https://nginx.org/download/nginx-1.12.2.tar.gz
wget https://nginx.org/download/nginx-1.12.2.tar.gz
2. 编译安装nginx
# 解压文件
tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
# 安装编译工具
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
# 创建运行用户、组,-M不为这个用户创建家目录;-s /sbin/nologin不允许登录系统
useradd -M -s /sbin/nologin nginx
# 配置 编译 安装
#启用 http_stub_status_module 模块以支持状态统计
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
#让系统识别nginx的操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
3. 完成后测试输入
[root@dhl104 nginx-1.12.2]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@dhl104 nginx-1.12.2]#
说明安装成功。
4. 配置nginx
vim /usr/local/nginx/conf/nginx.conf
在http段增加:
upstream lafserver {
ip_hash;
server 172.16.100.101:32672;
server 172.16.100.102:32672;
server 172.16.100.103:32672;
}
location / 段改为:
location / {
# root html;
# index index.html index.htm;
proxy_pass http://lafserver;
proxy_redirect off;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
5. 启动nginx
命令行直接输入nginx即可启动
nginx
测试laf
1. 浏览器输入:http://console.172-16-100-104.nip.io 回车(这里使用nginx地址访问,不再是直接访问k8s机器的地址!!!)
2. 注册,登录
3. 写云函数,发布云函数:
4. http访问云函数
http://hqeiiq.172-16-100-104.nip.io/dd