注意: 部署之前需要搭建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: {}