k8s(kubernetes)部署laf框架

准备

安装centos

  • 准备4台(虚拟机)
  • 安装Centos7.9
  • 系统要纯净
  • 系统中不要安装docker(k8s从v1.23.2,不再支持 docker ,容器运行时使用了 containerd)
  • 安装好vim
  • 安装好wget
  • 安装好git
  • 4台主机的用户名必须是root,密码必须是一样的,这里设置为(123456a?)
  • 关闭selinux
  • 关闭firewalld
  • 安装过程省略

配置CentOs

  1. 设置四台机器ip:172.16.100.101、172.16.100.102、172.16.100.103、172.16.100.104
  2. 设置四台机器hostname:dhl101.dhl.com、dhl102.dhl.com、dhl103.dhl.com、dhl104.dhl.com
  3. 更改四台机器的host文件,使四台机器可以通过域名互相访问
  4. DNS1服务器更改为114.114.114.114,这一步是确保能够解析nio.ip的域名
  5. 确保这4台服务器处于启动状态
  6. 确保4台服务器时间同步
  7. 主机关闭代理! 一定关闭代理!!!否则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

  1. 打开git地址:https://github.com/labring/laf
  2. 打开本地部署文档:https://github.com/labring/laf/blob/main/deploy/README.md
  3. 克隆代码:git clone https://github.com/labring/laf.git,生产机我们不建议这样使用,推荐下载已经归档的版本,我们使用v0.8.6版本。这里使用:https://github.com/labring/laf/archive/refs/tags/v0.8.6.tar.gz
  4. 解压下载的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

猜你喜欢

转载自blog.csdn.net/corosync/article/details/128673125