Kubernetes スペースで ChirpStack をセットアップしようとしていますが、うまくいかないようで、解決策となるオンライン リソースも見つかりません。
**chirpstack-application-server-6d6f8d699c-nlrmx 1/1 Running 0 44s\
chirpstack-gateway-bridge-5454b7f9f-fm5wl 1/1 Running 0 73s\
chirpstack-mosquitto-646899d74d-d7bhl 0/1 CrashLoopBackOff 3 85s\
chirpstack-network-server-66cdf9bdf7-rhzg5 1/1 Running 0 55s**
上記は、現在私が所有しているすべてのポッドです。アプリ サーバー、ネット サーバー、ゲートウェイ ブリッジはすべて起動して実行されますが、Mosquitto ブローカーは「Complete」に移行し、すぐに CrashLoopBackOff に入ります。
これは設定不足が原因かもしれないと思い、数日かけて mosquitto.conf ファイルを「allow_anonymous true」に設定し、ChirpStack コンポーネントからの接続を期待しましたが、ログには MQTT 接続拒否エラーが表示されるだけです。
kubectl ログ chirpstack-application-server の出力
time="2020-12-10T15:01:41Z" level=error msg="integration/mqtt: connecting to broker error, will retry in 2s: Network Error : dial tcp 10.244.146.236:1883: i/o timeout"
接続できなかったため、逆であると想定し、password_file に追加して allow_anonymous を false にする必要があると判断しました。以下は私の現在の設定です。何が問題なのかわかる方がいるかもしれません。
configMap-1.yml
kind: ConfigMap
metadata:
name: mosquitto-password
namespace: ****
labels:
app: chirpstack-mosquitto
data:
password_file.txt: |
admin:admin
user:user
app-server:app-server
net-server:net-server
gateway-bridge:gateway-bridge
configMap.yml
kind: ConfigMap
metadata:
name: mosquitto-config
namespace: ****
labels:
app: chirpstack-mosquitto
data:
mosquitto.conf: |
persistence true
persistence_location /mosquitto/data/
# per_listener_settings false
log_dest stdout
# listener 1886
listener 1883
protocol mqtt
# Defaults to false, unless there are no listeners defined in the configuration
# file, in which case it is set to true, but connections are only allowed from
# the local machine.
allow_anonymous false
password_file /.config/mosquitto/auth/password_file.txt
# cafile: /mosquitto/config/certs/ca.crt
# certfile: /mosquitto/config/certs/server.crt
# keyfile: /mosquitto/config/certs/server.key
require_certificate false
use_identity_as_username false
デプロイメント.yml
kind: Deployment
metadata:
name: chirpstack-mosquitto
namespace: ****
spec:
replicas: 1
selector:
matchLabels:
app: chirpstack-mosquitto
template:
metadata:
labels:
app: chirpstack-mosquitto
spec:
containers:
- name: chirpstack-mosquitto
image: ****/chirpstack/eclipse-mosquitto:1.6.12
ports:
- containerPort: 1883
volumeMounts:
- name: password-file
mountPath: /.config/mosquitto/auth/password_file.txt
subPath: password_file.txt
- name: mosquitto-data
mountPath: /mosquitto/data
- name: mosquitto-log
mountPath: /mosquitto/log
- name: config-file
mountPath: /.config/mosquitto/mosquitto.conf
subPath: mosquitto.conf
securityContext:
runAsNonRoot: true
fsGroup: 1
runAsGroup: 1000
runAsUser: 1000
supplementalGroups:
- 1
volumes:
- name: config-file
configMap:
name: mosquitto-config
- name: password-file
configMap:
name: mosquitto-password
- name: mosquitto-data
emptyDir: {}
- name: mosquitto-log
emptyDir: {}
サービス.yml
kind: Service
metadata:
name: chirpstack-mosquitto
namespace: 186215-poc
spec:
type: ClusterIP
ports:
- name: mqtt
port: 1883
targetPort: 1883
protocol: TCP
selector:
app: chirpstack-mosquitto
答え1
mosquitto/configmap.yaml:
apiVersion: v1
kind: ConfigMap
metadata:
name: mosquitto-config
data:
mosquitto.conf: |-
# Ip/hostname to listen to.
# If not given, will listen on all interfaces
#bind_address
# Port to use for the default listener.
port 1883
# Allow anonymous users to connect?
# If not, the password file should be created
allow_anonymous true
# The password file.
# Use the `mosquitto_passwd` utility.
# If TLS is not compiled, plaintext "username:password" lines bay be used
# password_file /mosquitto/config/passwd
mosquitto/deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mosquitto
spec:
selector:
matchLabels:
app: mosquitto
template:
metadata:
labels:
app: mosquitto
spec:
containers:
- name: mosquitto
image: eclipse-mosquitto:2.0
resources:
requests:
cpu: "50m"
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 1883
volumeMounts:
- name: mosquitto-config
mountPath: /mosquitto/config/mosquitto.conf
subPath: mosquitto.conf
volumes:
- name: mosquitto-config
configMap:
name: mosquitto-config
mosquitto/service.yaml:
apiVersion: v1
kind: Service
metadata:
name: mosquitto
spec:
selector:
app: mosquitto
ports:
- port: 1883
targetPort: 1883
今:
$ kubectl apply -f mosquitto/
$ kubectl get pods,deployments,services -o wide
$ kubectl logs -l app=gateway-bridge -f --all-containers
答え2
次の手順を実行します:
git クローンhttps://github.com/halkeye-helm-charts/mosquitto.git
修正する値.yamlファイル、追加ノードポートまたはロードバランサーそして、ストレージクラス。
service: type: NodePort persistence: storageClass: "oci-bv"
展開方法ヘルムチャート:
helm install mosquitto --generate-name
を参照してください蚊pod ログ:
kubectl logs pod/mosquitto-service-name
。例:サービスをテストします。
加入者:
docker run -it --rm --name mqtt-subscriber efrecon/mqtt-client sub -h ip_address -p port -t "/#"
出版社:
docker run -it --rm --name mqtt-publisher efrecon/mqtt-client pub -h ip- address -m "SOOntestMessage" -p port -t "/test"
サブスクライバーにメッセージが届くはずです: