使用kubernetes部署jetlinks社区版
概述
jetlinks作为优秀开源框架,在物联网领域有着重要地位,虽然社区版本没有提供微服开源,在平时开发过程中,也可以使用kubernetes进行部署,使用trae可以非常方便的把社区版本的dockerfile配置文件自动转换成kubernetes的配置文件,这种转换大大提高了开发效率。但作者认为,虽然AI辅助开发工具非常强大,但开发者的基本原理必须要清楚,有利于找问题。在部署jetlinks的下面的过程中,作者就混淆了nodeport和clusterport,导致jetlinks-ui无法访问到jetlinks-ce,推荐一个免费的学习kubernetes的网站,也是kubernetes官网上推荐的:learning.edx.org/course/cour...
部署jetlinks社区版使用的语句
kubectl只需要在master下发pod即可,kubernetes自动实现容器编排,可谓开发人员的有力帮手,让我们从码农中解脱出来。以下是主要使用的语句。
- scp jetlinks-community-setting.yaml [email protected]:/root/k8s
- kubectl apply -f jetlinks-community-setting.yaml
步骤一:部署redis
这里主要检查redis的密码是否和下载的jetlinks镜像中要求的一致。
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jetlinks-ce-redis
spec:
replicas: 1
selector:
matchLabels:
app: jetlinks-ce-redis
template:
metadata:
labels:
app: jetlinks-ce-redis
spec:
containers:
- name: redis
image: redis:5.0.4
command: ["redis-server", "--appendonly", "yes"]
ports:
- containerPort: 6379
volumeMounts:
- name: redis-data
mountPath: /data
volumes:
- name: redis-data
hostPath:
path: /dev-data/redis
type: DirectoryOrCreate
步骤二:部署elasticsearch
这里主要检查使用的版本是否和jetlinks中镜像要求的一致,kibana部署或者不部署影响不大。
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jetlinks-ce-elasticsearch
spec:
replicas: 1
selector:
matchLabels:
app: jetlinks-ce-elasticsearch
template:
metadata:
labels:
app: jetlinks-ce-elasticsearch
spec:
containers:
- name: elasticsearch
image: elasticsearch:7.17.23
步骤三:部署postgres
这里主要检查postgres的镜像版本,能够下载下来问题就不大。
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jetlinks-ce-postgres
spec:
replicas: 1
selector:
matchLabels:
app: jetlinks-ce-postgres
template:
metadata:
labels:
app: jetlinks-ce-postgres
spec:
containers:
- name: postgres
image: postgres:11-alpine
步骤四:部署jetlinks后台
这里如果使用了nodeport,需要注意ports中对应的端口号,在jetlinks-ui中的配置中会用到。
yaml
apiVersion: v1
kind: Service
metadata:
name: jetlinks-ce
spec:
type: NodePort
selector:
app: jetlinks-ce
ports:
- name: api-port
protocol: TCP
port: 8848
targetPort: 8848
nodePort: 30848
- name: mqtt-port
protocol: TCP
port: 1883
targetPort: 1883
nodePort: 31883
- name: reserved-port-1
protocol: TCP
port: 8800
targetPort: 8800
nodePort: 30800
- name: reserved-port-2
protocol: TCP
port: 5060
targetPort: 5060
nodePort: 30060
步骤五:部署jetlinks前端 这里需要检查端口号,如果不通,需要kubectl exec进入容器中,curl调试下网络。
yaml
apiVersion: v1
kind: Service
metadata:
name: jetlinks-ce-ui
spec:
type: NodePort
selector:
app: jetlinks-ce-ui
ports:
- name: ui-port
port: 80
targetPort: 80
nodePort: 30900

持续更新:地址