ZabbixをK3s上に構築しICMPの監視をを行う手順をまとめます.
Zabbix構築¶
まずはgithubからダウンロードしましょう
$ git clone https://github.com/zabbix/zabbix-docker.git
いろいろ調べたのですが/zabbix-docker/kubernetes.yamlをapplyして実行するそうです.
$ kubectl apply -f kubernetes.yaml -n zabbix
そしたらImagepullbackoffになっていました.理由としては学内の生徒が一斉にdockerhubに対してimageをpullしたためdockerhub側で制限がかけらているからです.6時間あたり100から200がダメらしいです.うちの学校ではsreの授業があるのでpullする回数が多く巻き込まれました.
https://www.docker.com/ja-jp/increase-rate-limits/#:~:text=%E8%A9%B3%E7%B4%B0%E6%83%85%E5%A0%B1,%E3%81%AB%E5%88%B6%E9%99%90%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82
zabbix-m@zabbix-m:~/zabbix-docker$ kubectl get pods -n zabbix
NAME READY STATUS RESTARTS AGE
zabbix-web-5q66p 0/1 ErrImagePull 0 18s
zabbix-java-gateway-6f87b4f94-lkv98 0/1 ErrImagePull 0 18s
zabbix-agent-xgnxj 0/1 ErrImagePull 0 18s
zabbix-agent-jgrsn 0/1 ErrImagePull 0 18s
zabbix-proxy-sqlite3-6985cddf9f-vhbxf 0/1 ErrImagePull 0 18s
zabbix-web-service-c5d9b867d-5w5fl 0/1 ErrImagePull 0 18s
zabbix-proxy-mysql-6bb7fc889-4kfbk 0/1 ErrImagePull 0 18s
zabbix-web-k4jfb 0/1 ErrImagePull 0 18s
zabbix-server-55f46f45d9-kqcqz 0/2 ErrImagePull 0 18s
mysql-server-5ddbbfd9c7-tv8zd 0/1 ErrImagePull 0 18s
対処法としてはdockerにログインしてsecretを作成しdeploymentの下に追加することで回避できます.
今度はdocker loginができません
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: manato0405
Password:
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/auth": dial unix /var/run/docker.sock: connect: permission denied
調べたらdocker.sockにはrootかdockerのユーザしか権限がないらしい そのためdockerに権限を振らないといけない これでログインできる
$ sudo usermod -aG docker zabbix-m
そうしたらログイン!
zabbix-m@zabbix-m:~$ docker login
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /home/zabbix-m/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
次にsecretを作成する.secretを作成することでdocker レジストリ(Docker Image)を引っ張ってくる際に認証してImageをとってこれる. https://ramesh-sahoo.medium.com/failed-to-pull-image-toomanyrequests-you-have-reached-your-pull-rate-limit-b46c9f1fe273
まずはsecretの作成
$ kubectl create secret generic regcred --from-file=.dockerconfigjson=<.docker/configのある場所の絶対パス> --type=kubernetes.io/dockerconfigjson -n <secretを適応させるnamespace>
作成できたらダウンロードしてきた設定ファイルに以下を追加(一例)
apiVersion: apps/v1
kind: Deployment
metadata:
name: zabbix-web-service
labels:
app: zabbix
tier: web-service
namespace: zabbix
spec:
selector:
matchLabels:
name: zabbix-web-service
app: zabbix
template:
metadata:
labels:
name: zabbix-web-service
app: zabbix
spec:
containers:
- name: zabbix-web-service
image: zabbix/zabbix-web-service:alpine-6.4-latest
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 100m
memory: 512Mi
requests:
cpu: 100m
memory: 512Mi
ports:
- containerPort: 10053
protocol: TCP
name: zabbix-web-svc
livenessProbe:
tcpSocket:
port: 10053
initialDelaySeconds: 5
failureThreshold: 3
periodSeconds: 2
env:
- name: ZBX_ALLOWEDIP
value: "0.0.0.0/0"
- name: ZBX_LISTENPORT
value: "10053"
- name: ZBX_DEBUGLEVEL
value: "3"
- name: ZBX_TIMEOUT
value: "3"
- name: ZBX_TLSACCEPT
value: ""
- name: ZBX_TLSCAFILE
value: ""
- name: ZBX_TLSCERTFILE
value: ""
- name: ZBX_TLSKEYFILE
value: ""
- name: DEBUG_MODE
value: "false"
securityContext:
capabilities: {}
privileged: false
imagePullSecrets:
- name: regcred
そしてapplyしてみる
$ kubectl apply -f kubernetes.yaml -n zabbix
Podの確認
^Czabbix-m@zabbix-m:~/zabbix-docker$ kubectl get pods -n zabbix
NAME READY STATUS RESTARTS AGE
zabbix-java-gateway-7557db7fd6-ljvtt 1/1 Running 0 2m5s
zabbix-agent-vw55z 1/1 Running 0 2m5s
zabbix-agent-wlt2r 1/1 Running 0 2m5s
zabbix-web-service-595c64d9bb-dg9fh 1/1 Running 0 2m5s
mysql-server-795b5c95f-88x24 1/1 Running 0 2m5s
zabbix-proxy-sqlite3-58547b8769-mrwh5 1/1 Running 0 2m5s
zabbix-web-lshnb 1/1 Running 0 2m5s
zabbix-web-gp65f 1/1 Running 0 2m5s
zabbix-proxy-mysql-85bdcf8bcf-4wcdn 1/1 Running 0 2m5s
zabbix-server-79b56cd87-5s2wv 2/2 Running 0 2m5s
一応port-fowardしてみる
$ kubectl port-forward --address 192.168.100.101 svc/zabbix-web 8080:80 -n zabbix
できました!