k8s部署zabbix

683 阅读2分钟

注意: 部署之前需要搭建nfs共享存储,因为mysql的持久化存储使用的是nfs

部署mysql

[root@master zabbix]# cat zabbixdb.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: zabbixdb
  name: zabbixdb
  namespace: zabbix
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbixdb
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: zabbixdb
    spec:
      volumes:
      - name: zabbixdb-data
        persistentVolumeClaim:
          claimName: zabbix-pvc
      containers:
      - image: mysql:5.7
        name: mysql
        ports:
        - name: mysql
          containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: zabbix
        - name: MYSQL_DATABASE
          value: zabbix
        volumeMounts:
        - name: zabbixdb-data
          mountPath: /var/lib/mysql
        resources: {}
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: zabbixdb
  name: zabbixdb
  namespace: zabbix
spec:
  clusterIP: 10.10.1.100
  ports:
  - name: 3306-3306
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: zabbixdb
  type: ClusterIP
status:
  loadBalancer: {}
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: zabbix-pv
spec:
  capacity:
    storage: 8Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /data/nfs/zabbixdb
    server: 192.168.61.10
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: zabbix-pvc
  namespace: zabbix
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 8Gi

zabbix-web

命令创建模板

kubectl create deploy zabbix-web --image=zabbix/zabbix-server-mysql --dry-run=client -o yaml > zabbix-web.yaml
kubectl create svc nodeport zabbix-server --tcp=8080:8080 -o yaml --dry-run=client >> zabbix-web.yaml
[root@master zabbix]# cat zabbix-web.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: zabbix-web
  name: zabbix-web
  namespace: zabbix
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-web
  strategy: {}
  template:
    metadata:
      labels:
        app: zabbix-web
    spec:
      containers:
      - image: zabbix/zabbix-web-nginx-mysql:5.0-ubuntu-latest
        name: zabbix-server-mysql    
        env:
        - name: DB_SERVER_HOST
          value: zabbixdb.zabbix.svc.cluster.local
        - name: MYSQL_USER
          value: root
        - name: MYSQL_PASSWORD
          value: zabbix
        - name: ZBX_SERVER_HOST
          value: 192.168.61.20
        - name: PHP_TZ
          value: Asia/Shanghai
        resources: {}
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: zabbix-web
  name: zabbix-web
  namespace: zabbix
spec:
  ports:
  - name: 8080-8080
    port: 8080
    protocol: TCP
    targetPort: 8080
    nodePort: 30081
  selector:
    app: zabbix-web
  type: NodePort
status:
  loadBalancer: {}

zabbix-server

命令创建模板

kubectl create deploy zabbix-server --image=zabbix/zabbix-server-mysql:5.0-ubuntu-latest --dry-run=client -o yaml > zabbix-server.yaml
[root@master zabbix]# cat zabbix-server.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: zabbix-server
  name: zabbix-server
  namespace: zabbix
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-server
  template:
    metadata:
      labels:
        app: zabbix-server
    spec:
      nodeSelector:
        kubernetes.io/hostname: node
      volumes:
      - name: zabbix-scripts
        hostPath:
          path: /usr/lib/zabbix
      - name: zabbix-file
        hostPath:
          path: /var/lib/zabbix
      hostNetwork: true
      containers:
      - image: zabbix/zabbix-server-mysql:5.0-ubuntu-latest
        name: zabbix-server-mysql
        env:
        - name: DB_SERVER_HOST
          value: 10.10.1.100
        - name: MYSQL_USER
          value: root
        - name: MYSQL_PASSWORD
          value: zabbix
        resources: {}

zabbix-agent部署

命令创建模板

kubectl create deploy zabbix-agent --image=xxx --dry-run=client -o yaml > zabbix-agent.yaml
[root@master zabbix]# cat zabbix-agent.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: zabbix-agent
  name: zabbix-agent
  namespace: zabbix
spec:
  selector:
    matchLabels:
      app: zabbix-agent
  template:
    metadata:
      labels:
        app: zabbix-agent
    spec:
      hostNetwork: true
      containers:
      - image: zabbix/zabbix-agent:5.0-ubuntu-latest
        name: zabbix-agent
        env:
        - name: ZBX_SERVER_HOST
          value: 192.168.61.20
        resources: {}