這篇文章主要介紹“怎么訪問(wèn)Kubernetes集群中的EMQ X”,在日常操作中,相信很多人在怎么訪問(wèn)Kubernetes集群中的EMQ X問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么訪問(wèn)Kubernetes集群中的EMQ X”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
尖山網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
Ingress 公開(kāi)了從集群外部到集群內(nèi) 服務(wù) 的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 資源上定義的規(guī)則控制。官網(wǎng)的一個(gè)簡(jiǎn)單示例如下:
Ingress 為服務(wù)提供了供外部訪問(wèn)的 URL,負(fù)載均衡流量,TLS/SSL 終止的能力。Ingress 可以簡(jiǎn)單理解為服務(wù)的服務(wù),通過(guò)獨(dú)立的 Ingress 對(duì)象來(lái)指定請(qǐng)求轉(zhuǎn)發(fā)的規(guī)則,將請(qǐng)求路由到對(duì)應(yīng)的服務(wù)中。
為了讓 Ingress 資源工作,集群必須有一個(gè)正在運(yùn)行的 Ingress 控制器。 NGINX Ingress Controller 是由 Kubernetes 提供支持和維護(hù)的一個(gè)控制器。
本文主要介紹如何通過(guò) NGINX Ingress Controller 來(lái)訪問(wèn) Kubernetes 集群中的 EMQ X。
開(kāi)始之前,請(qǐng)確保您已經(jīng)搭建好了一個(gè)可用的 Kubernetes 集群,本文示例是基于阿里云標(biāo)準(zhǔn)版托管集群。
參考 emqx charts ,使用 Helm 進(jìn)行安裝
$ helm repo add emqx https://repos.emqx.io/charts $ kubectl create ns my-emqx $ helm install my-emqx emqx/emqx -n my-emqx
確保 pod 處于 running 狀態(tài)
$ kubectl get pod -n my-emqx NAME READY STATUS RESTARTS AGE my-emqx-0 1/1 Running 0 97s my-emqx-1 1/1 Running 0 73s my-emqx-2 1/1 Running 0 51s
查看 service
$ kubectl get svc -n my-emqx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-emqx ClusterIP 172.21.5.1601883/TCP,8883/TCP,8081/TCP,8083/TCP,8084/TCP,18083/TCP 5m my-emqx-headless ClusterIP None 1883/TCP,8883/TCP,8081/TCP,8083/TCP,8084/TCP,18083/TCP,4370/TCP 5m
參考 Installation Guide,根據(jù)不同情況選擇不同的配置進(jìn)行安裝,也可以通過(guò) Helm 安裝
$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx $ helm repo update $ helm install my-release ingress-nginx/ingress-nginx
因?yàn)楸疚幕诎⒗镌萍?,可以直接選擇組件安裝
查看 service
$ Kubectl get nginx-ingress-lb svc -n kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) nginx-ingress-lb LoadBalancer 172.21.6.205 47.99.187.164 80:30639/TCP,443:30396/TCP 3m12s
# ingress.yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" name: emqx spec: rules: - host: emqx.cn.iotdp.cn http: paths: - backend: serviceName: my-emqx servicePort: 18083 path: / - backend: serviceName: my-emqx servicePort: 8083 path: /mqtt
路由規(guī)則:
匹配 /mqtt
路由到 8083 Websocket 端口
其余路徑路由到 18083 dashboard
部署資源
$ kubectl apply -f ingress.ymal -n my-emqx
部署完成以后,修改 DNS 解析,便可以通過(guò):http://emqx.cn.iotdp.cn 來(lái)訪問(wèn) dashboard
然后通過(guò) 8083
和 /path
訪問(wèn) Websocket
Ingress 不支支持 TCP 和 UDP 服務(wù),因此 Ingress 使用 --tcp-services-configmap
和 --udp-services-configmap
指向一個(gè)包含端口映射關(guān)系的 configmap
來(lái)訪問(wèn),key 為外部暴露的端口,value 格式為:
首先修改 ingress-nginx deployment
$ kubectl edit deployment nginx-ingress-controller -n kube-system
添加以下內(nèi)容到spec.template.spec.containers.args
--tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
--udp-services-configmap=$(POD_NAMESPACE)/udp-services
containers: - args: - /nginx-ingress-controller - '--configmap=$(POD_NAMESPACE)/nginx-configuration' - '--annotations-prefix=nginx.ingress.kubernetes.io' - '--publish-service=$(POD_NAMESPACE)/nginx-ingress-lb' - '--tcp-services-configmap=$(POD_NAMESPACE)/tcp-services' - '--udp-services-configmap=$(POD_NAMESPACE)/udp-services'
配置 tcp-service
# tcp-service.yaml apiVersion: v1 kind: ConfigMap metadata: name: tcp-services namespace: ingress-nginx data: 1883: "my-emqx/my-emqx:1883"
最后在服務(wù)中配置對(duì)應(yīng)端口
$ kubectl edit svc nginx-ingress-lb -n kube-system
配置如下
apiVersion: v1 kind: Service metadata: labels: app: nginx-ingress-lb name: nginx-ingress-lb namespace: kube-system spec: type: LoadBalancer ports: - name: http port: 80 protocol: TCP targetPort: 80 - name: https port: 443 protocol: TCP targetPort: 443 - name: emqx-tcp port: 1883 protocol: TCP targetPort: 1883 selector: app: ingress-nginx
查看 ingress-nginx 服務(wù)
$ kubectl get svc nginx-ingress-lb -n kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-ingress-lb ClusterIP 172.21.11.9080:30639/TCP,443:30396/TCP,1883:30657/TCP 13m
我們便可以通過(guò) 1883
端口連接到 EMQ X 服務(wù)了。
到此,關(guān)于“怎么訪問(wèn)Kubernetes集群中的EMQ X”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!