广告
返回顶部
首页 > 资讯 > 精选 >如何使用Rancher在Kubernetes上部署EMQ X集群
  • 158
分享到

如何使用Rancher在Kubernetes上部署EMQ X集群

2023-06-03 18:06:20 158人浏览 八月长安
摘要

这篇文章主要讲解了“如何使用Rancher在kubernetes上部署EMQ X集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Rancher在Kubernetes上部署EMQ X

这篇文章主要讲解了“如何使用Rancher在kubernetes上部署EMQ X集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Rancher在Kubernetes上部署EMQ X集群”吧!

实验环境:

通过Rancher部署kubernetes集群

Rancher的安装以及部署kubernetes集群的步骤推荐直接按照快速入门执行。

创建Rancher api密钥

EMQ X通过访问kube-apiserver来实现自动集群功能,在Rancher中,Rancher对kube-apiserver做了一层代理,在访问kube-apiserver的时候必须提供用于向Rancher进行身份验证的API密钥。参考用户手册创建并保存API Key。本实验中创建的Access Key为:token-dksbl,Secret Key为:pshhhf5cp8d5v5x7bzjdm82qfrwgx7f2bzksnr748j42xmbvvklbdz,组合成的Token为:token-dksbl:pshhhf5cp8d5v5x7bzjdm82qfrwgx7f2bzksnr748j42xmbvvklbdz

下载并配置kubectl

  1. 下载并安装kubectl

  2. 进入Rancher集群页面,点击Kubeconfig文件。

如何使用Rancher在Kubernetes上部署EMQ X集群

将kubeconfig文件保存到~/.kube/config

如何使用Rancher在Kubernetes上部署EMQ X集群

执行kubectl cluster-info验证配置是否成功

$ kubectl cluster-infoKubernetes master is running at https://13.125.244.172/k8s/clusters/c-vvgjqKubeDNS is running at Https://13.125.244.172/k8s/clusters/c-vvgjq/api/v1/namespaces/kube-system/services/kube-dns:dns/proxyTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

访问kube-apiserver

EMQ X通过访问kube-apiserver来实现自动集群,kube-apiserver的地址可以查看~/.ssh/config文件或者执行kubectl cluster-info获取,本实验中kube-apiserver的地址为:https://13.125.244.172/k8s/clusters/c-vvgjq

直接访问kube-apiserver,可以看到会报错需要认证。

$ curl -k https://13.125.244.172/k8s/clusters/c-vvgjq{"type":"error","status":"401","message":"must authenticate"}

在头部加上Authorization认证则可以正常访问

$ curl -k -H 'Authorization: Bearer token-dksbl:pshhhf5cp8d5v5x7bzjdm82qfrwgx7f2bzksnr748j42xmbvvklbdz' https://13.125.244.172/k8s/clusters/c-vvgjq

编辑emqx.yaml

在Kubernetes 上安装 EMQ X 系列文章之二 :EMQ X 自动集群一文中分享了EMQ X部署kubernetes集群的yaml文件如下,在Rancher上部署EMQ X集群的话需要稍加改动。

$cat emqx.yamlapiVersion: v1kind: Servicemetadata:  name: emqxspec:  ports:  - port: 32333    nodePort: 32333    targetPort:  emqx-dashboard    protocol: tcp  selector:    app: emqx  type: NodePort---apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: emqx  labels:        app: emqxspec:  replicas: 2  template:    metadata:      labels:        app: emqx    spec:      containers:      - name: emqx        image: emqx/emqx:latest        ports:        - name: emqx-dashboard          containerPort: 18083        env:        - name: EMQX_CLUSTER__DISCOVERY          value: k8s        - name: EMQX_NAME          value: emqx        - name: EMQX_CLUSTER__K8S__APISERVER          value: http://172.31.19.161:8080        - name: EMQX_CLUSTER__K8S__NAMESPACE          value: default        - name: EMQX_CLUSTER__K8S__SERVICE_NAME          value: emqx        - name: EMQX_CLUSTER__K8S__ADDRESS_TYPE          value: ip        - name: EMQX_CLUSTER__K8S__APP_NAME          value: emqx        tty: true

EMQ X可以读取/var/run/secrets/kubernetes.io/serviceaccount/token文件中的内容组合Authorization认证访问kube-apiserver,所以只需要把Rancher的API Token通过Secret挂载到容器中就可以了。

Secret解决了密码、token、密钥等敏感数据的配置问题,而不需要把这些敏感数据暴露到镜像或者Pod Spec中。Secret可以以Volume或者环境变量的方式使用。

Secret有三种类型:

  • Service Account :用来访问Kubernetes API,由Kubernetes自动创建,并且会自动挂载到Pod的/run/secrets/kubernetes.io/serviceaccount目录中;

  • Opaque :base64编码格式的Secret,用来存储密码、密钥等;

  • kubernetes.io/dockerconfigjson :用来存储私有docker reGIStry的认证信息。

首先对API Token做base64编码

$ echo -n token-dksbl:pshhhf5cp8d5v5x7bzjdm82qfrwgx7f2bzksnr748j42xmbvvklbdz | base64 -w 0dG9rZW4tZGtzYmw6cHNoaGhmNWNwOGQ1djV4N2J6amRtODJxZnJ3Z3g3ZjJiemtzbnI3NDhqNDJ4bWJ2dmtsYmR6

在yaml文件中创建Secret

$vim emqx.yamlapiVersion: v1kind: Secretmetadata:  name: emqx-secrettype: Opaquedata:  token: dG9rZW4tcGI2MjU6eDZ2eGJ0Y2NmdG1waGpseHR3NGNjdGN2d2txdzk5aDJzYmhxNHFtaDh5c2ZnbXd6dzJ0d2Rw---......

修改Deployment,将环境变量中的EMQX_CLUSTER__K8S__APISERVER改为Rancher的Kube-apiserver的地址,增加volumeMounts

$vim emqx.yaml......apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: emqx  labels:        app: emqxspec:  replicas: 2  template:    metadata:      labels:        app: emqx    spec:      volumes:      - name: emqx-secret        secret:           secretName: emqx-secret      containers:      - name: emqx        image: emqx/emqx:latest        ports:        - name: emqx-dashboard          containerPort: 18083        - name: emqx-http          containerPort: 8083        - name: emqx-mQtt          containerPort: 1883        env:        - name: EMQX_CLUSTER__DISCOVERY          value: k8s        - name: EMQX_NAME          value: emqx        - name: EMQX_CLUSTER__K8S__APISERVER          value: https://13.125.244.172/k8s/clusters/c-vvgjq        - name: EMQX_CLUSTER__K8S__NAMESPACE          value: default        - name: EMQX_CLUSTER__K8S__SERVICE_NAME          value: emqx        - name: EMQX_CLUSTER__K8S__ADDRESS_TYPE          value: ip        - name: EMQX_CLUSTER__K8S__APP_NAME          value: emqx        tty: true        volumeMounts:          - name: emqx-secret            mountPath: "/var/run/secrets/kubernetes.io/serviceaccount"            readOnly: true

部署EMQ X

查看修改后的emqx.yaml

$cat emqx.yamlapiVersion: v1kind: Secretmetadata:  name: emqx-secrettype: Opaquedata:  token: dG9rZW4tcGI2MjU6eDZ2eGJ0Y2NmdG1waGpseHR3NGNjdGN2d2txdzk5aDJzYmhxNHFtaDh5c2ZnbXd6dzJ0d2Rw---apiVersion: v1kind: Servicemetadata:  name: emqxspec:  ports:  - port: 32333    nodePort: 32333    targetPort:  emqx-dashboard    protocol: TCP  selector:    app: emqx  type: NodePort---apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: emqx  labels:        app: emqxspec:  replicas: 2  template:    metadata:      labels:        app: emqx    spec:      volumes:      - name: emqx-secret        secret:           secretName: emqx-secret      containers:      - name: emqx        image: emqx/emqx:latest        ports:        - name: emqx-dashboard          containerPort: 18083        - name: emqx-http          containerPort: 8083        - name: emqx-mqtt          containerPort: 1883        env:        - name: EMQX_CLUSTER__DISCOVERY          value: k8s        - name: EMQX_NAME          value: emqx        - name: EMQX_CLUSTER__K8S__APISERVER          value: https://13.125.244.172/k8s/clusters/c-vvgjq        - name: EMQX_CLUSTER__K8S__NAMESPACE          value: default        - name: EMQX_CLUSTER__K8S__SERVICE_NAME          value: emqx        - name: EMQX_CLUSTER__K8S__ADDRESS_TYPE          value: ip        - name: EMQX_CLUSTER__K8S__APP_NAME          value: emqx        tty: true        volumeMounts:          - name: emqx-secret            mountPath: "/var/run/secrets/kubernetes.io/serviceaccount"            readOnly: true

部署EMQ X

$ kubectl create -f emqx.yamlsecret/emqx-secret createdservice/emqx createddeployment.extensions/emqx created

查看状态

$ kubectl get podsNAME                       READY   STATUS    RESTARTS   AGEemqx-67b5fcf4d-gwzfn       1/1     Running   0          36semqx-67b5fcf4d-rb7m6       1/1     Running   0          36s

集群成功

$ kubectl exec emqx-67b5fcf4d-gwzfn /opt/emqx/bin/emqx_ctl cluster statusCluster status: [{running_nodes,['emqx@10.42.1.24','emqx@10.42.2.19']}]

使用Rancher Dashboard部署EMQ X(可选)

删除刚刚部署的EMQ X

$ kubectl delete -f emqx.yamlsecret "emqx-secret" deletedservice "emqx" deleteddeployment.extensions "emqx" deleted

进入Rancher集群工作负载页面,点击导入YAML
如何使用Rancher在Kubernetes上部署EMQ X集群

在导入页面将emqx.yaml文件的内容复制进去!
如何使用Rancher在Kubernetes上部署EMQ X集群

点击导入,等待导入成功。

感谢各位的阅读,以上就是“如何使用Rancher在Kubernetes上部署EMQ X集群”的内容了,经过本文的学习后,相信大家对如何使用Rancher在Kubernetes上部署EMQ X集群这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 如何使用Rancher在Kubernetes上部署EMQ X集群

本文链接: https://www.lsjlt.com/news/235288.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用Rancher在Kubernetes上部署EMQ X集群
    这篇文章主要讲解了“如何使用Rancher在Kubernetes上部署EMQ X集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Rancher在Kubernetes上部署EMQ X...
    99+
    2023-06-03
  • Kubernetes 上安装 EMQ X 系列文章之三 :使用 Helm 管理、部署 EMQ X 集群
    Helm 介绍Helm 是管理 Kubernetes 包的工具,Helm 能提供下面的能力:创建新的 charts将 charts 打包成 tgz 文件与 chart 仓库交互安装和卸载 Kubernetes 的应用管理使用 Helm 安装...
    99+
    2023-06-03
  • Kubernetes中如何使用Rancher部署K8S集群
    本篇文章给大家分享的是有关Kubernetes中如何使用Rancher部署K8S集群,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.安装Rancher这里使用三台机器来搭建K...
    99+
    2023-06-19
  • 如何在Azure上部署Kubernetes集群
    如何在Azure上部署Kubernetes集群,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在实验、演示的时候,或者是生产过程中,我经常会需要运行一些 Docker 负载。...
    99+
    2023-06-05
  • 如何在kubernetes上部署consul集群
    这篇文章主要介绍“如何在kubernetes上部署consul集群”,在日常操作中,相信很多人在如何在kubernetes上部署consul集群问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何在kubern...
    99+
    2023-06-04
  • 如何在Kubernetes上部署Redis高可用集群
    如何在Kubernetes上部署Redis高可用集群,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 Redis 介绍Redis 代表REmote DI...
    99+
    2023-06-15
  • 使用Kubeadm在CentOS7.2上部署Kubernetes集群的方法
    本文参考kubernetes官网文章Installing Kubernetes on linux with kubeadm在CentOS7.2使用Kubeadm部署Kuebernetes集群,解决了一些在按照该文档部署时...
    99+
    2022-06-04
    CentOS部署Kubernetes集群 CentOS Kubernetes集群
  • 如何在Azure中部署Kubernetes容器集群
    这篇文章主要讲解了“如何在Azure中部署Kubernetes容器集群”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在Azure中部署Kubernetes容器集群”吧!在这个快速入门教程...
    99+
    2023-06-16
  • 如何在K8s上部署Redis集群
    这篇文章将为大家详细讲解有关如何在K8s上部署Redis集群,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、前言 架构原理:每个Master都可以拥有多个Slave。当...
    99+
    2022-10-18
  • 如何使用Kubernetes集群环境部署MySQL数据库
    这篇文章主要讲解了“如何使用Kubernetes集群环境部署MySQL数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Kubernetes集群环境部署MySQL数据库”吧!1 编...
    99+
    2023-06-30
  • 如何在阿里云服务器上部署CDH5集群
    CDH5是Cloudera的数据平台,用于在大规模集群中处理和分析大数据。在阿里云服务器上部署CDH5集群,需要考虑多个因素,包括服务器配置、软件安装、配置文件等。本文将详细介绍如何在阿里云服务器上部署CDH5集群。 详细说明:一、服务器配...
    99+
    2023-10-30
    阿里 集群 器上
  • 如何在Ubuntu 16.04、 CentOS 7和HypriotOS v1.0.1操作系统上部署一套安全的Kubernetes集群
    如何在Ubuntu 16.04、 CentOS 7和HypriotOS v1.0.1操作系统上部署一套安全的Kubernetes集群,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,...
    99+
    2023-06-05
  • 如何使用Ruby脚本部署Redis Cluster集群
    这篇文章主要为大家展示了“如何使用Ruby脚本部署Redis Cluster集群”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Ruby脚本部署Redis...
    99+
    2022-10-18
  • 如何在Kubernetes 上部署安装PHP + Nginx 多容器应用
    引言 Kubernetes是一个开源的容器编排系统。它允许你创建、更新和扩展容器,而无需担心停机。 要运行一个PHP应用程序,Nginx充当PHP-FPM的代理。将此设置打包到单个容器中可能是一个繁琐...
    99+
    2023-09-06
    kubernetes ubuntu php
  • 如何使用Terraform在AWS上部署Jenkins
    这篇文章主要介绍“如何使用Terraform在AWS上部署Jenkins”,在日常操作中,相信很多人在如何使用Terraform在AWS上部署Jenkins问题上存在疑惑,小编查阅了各式资料,整理出简单好用...
    99+
    2022-10-19
  • 如何在Linux上部署Go应用并集成Spring框架?
    在Linux上部署Go应用并集成Spring框架是一项非常有用的技能,因为Go语言的高性能和Spring框架的便利性使得它们的结合可以更好地满足现代应用程序的需求。在本文中,我们将详细介绍如何在Linux上部署Go应用并集成Spring框架...
    99+
    2023-10-16
    spring linux 二维码
  • 如何在 Windows 上部署 Python 分布式系统并集成 JavaScript 应用?
    在当今互联网时代,分布式系统已成为不可或缺的基础设施之一,而 Python 和 JavaScript 作为两种最受欢迎的编程语言之一,也成为了分布式系统开发的主流语言。在本文中,我们将介绍如何在 Windows 上部署 Python 分布...
    99+
    2023-08-21
    分布式 javascript windows
  • 如何在Linux服务器上使用NPM部署PHP应用?
    在开发一个PHP应用程序时,我们需要一种能够在服务器上运行的部署方式。使用NPM部署PHP应用程序是一个不错的选择。NPM是一个包管理器,它可以让你快速地安装、更新和卸载依赖包。下面我们将介绍如何使用NPM部署PHP应用程序。 1.安装N...
    99+
    2023-10-17
    linux npm 对象
  • 如何将自己的项目部署在云服务器上使用
    确定您的项目类型:不同的项目类型需要不同的云服务器选择。例如,对于Web应用程序,您可能需要选择一家云服务器提供商,例如Amazon Web Services(AWS)或Microsoft Azure。 选择云服务器提供商:根据您的预算、...
    99+
    2023-10-27
    自己的 如何将 器上
  • 如何在 Linux 系统上部署 Laravel 项目并使用 ASP 函数?
    Laravel 是目前非常流行的 PHP 框架之一,它提供了许多方便的工具和功能来帮助开发人员更快速地构建高质量的 Web 应用程序。在本文中,我们将介绍如何在 Linux 系统上部署 Laravel 项目并使用 ASP 函数。 安装 La...
    99+
    2023-09-02
    函数 linux laravel
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作