k8s 中部署rabbitmq和MySQL服務


1、部署pod服務:

rabbitmq.yaml文件如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: rabbitmq
  labels:
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/instance: rabbitmq
    app.kubernetes.io/version: "1.0"
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: rabbitmq
      app.kubernetes.io/instance: rabbitmq
  template:
    metadata:
      labels:
        app.kubernetes.io/name: rabbitmq
        app.kubernetes.io/instance: rabbitmq
    spec:
      containers:
        - name: rabbitmq
          image: "bitnami/rabbitmq:latest"
          imagePullPolicy: IfNotPresent
          ports:
            - name: rabbitmq5672
              containerPort: 5672
            - name: rabbit15672
              containerPort: 15672
              protocol: TCP
          resources:
            limits:
              memory: 2000Mi
            requests:
              memory: 1000Mi

2、創建rabbitmq svc服務:

apiVersion: v1
kind: Service
metadata:
  name: rabbitmq
  labels:
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/instance: rabbitmq
    app.kubernetes.io/version: "1.0"
spec:
  type: NodePort
  ports:
    - name: http
      nodePort: 30199
      port: 15672
      protocol: TCP
      targetPort: 15672
    - name: amqp
      nodePort: 30567
      port: 5672
      protocol: TCP
      targetPort: 5672
  selector:
    app.kubernetes.io/name: rabbitmq
    app.kubernetes.io/instance: rabbitmq

3、登錄pod,創建賬號和密碼:

# rabbitmq-plugins list
# rabbitmqctl add_user admin admin123
# rabbitmqctl set_user_tags admin administrator

4、web管理插件

#查看當前用戶列表
rabbitmqctl  list_users

#查看插件列表
rabbitmq-plugins list      
rabbitmq-plugins enable rabbitmq_management

K8S中部署MySQL服務:

1、創建k8s的 configmap文件:mysql-cm.yaml

# cat mysql-cm.yaml 
apiVersion: v1
data:
  mysql.cnf: |
    [client]
    default-character-set=utf8mb4
    [mysql]
    default-character-set=utf8mb4
    [mysqld]
    character_set_server=utf8mb4
    default_storage_engine=INNODB
    max_connections=1000
    lower_case_table_names=1
    group_concat_max_len=102400
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
kind: ConfigMap
metadata:
  labels:
    app: mysql-config
  name: mysql-config

2、創建MySQL pod 並指定掛載的位置和綁定到某個主機上面,如果有共享存儲的話就不用綁定主機節點:

# cat mysql-deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/instance: mysql
    app.kubernetes.io/name: mysql
    app.kubernetes.io/version: "1.0"
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/instance: mysql
      app.kubernetes.io/name: mysql
  template:
    metadata:
      labels:
        app.kubernetes.io/instance: mysql
        app.kubernetes.io/name: mysql
    spec:
      containers:
      - env:
        - name: MYSQL_ROOT_HOST
          value: '%'
        - name: MYSQL_ROOT_PASSWORD
          value: longji&2020!
        - name: TZ
          value: Asia/Shanghai
        image: c7n-registry.longi-silicon.com/library/mysql:5.7.32
        imagePullPolicy: IfNotPresent
        name: mysql
        ports:
        - containerPort: 3306
          name: mysql
          protocol: TCP
        resources:
          limits:
            memory: 4000Mi
          requests:
            memory: 1000Mi
        volumeMounts:
        - mountPath: /etc/mysql/conf.d/mysql.cnf
          name: config
          subPath: mysql.cnf
        - mountPath: /var/lib/mysql
          name: data
      nodeSelector:
        kubernetes.io/hostname: 10.0.8.105
      restartPolicy: Always
      volumes:
      - configMap:
          defaultMode: 420
          name: mysql-config
        name: config
      - hostPath:
          path: /data/mysql
          type: ""
        name: data

3、創建svc服務,外網客戶端可以連接操作.

# cat mysql-service.yaml 
apiVersion: v1
kind: Service
metadata:
  name: mysql
  labels:
    app.kubernetes.io/name: mysql
    app.kubernetes.io/instance: mysql
    app.kubernetes.io/version: "1.0"
spec:
  #type: ClusterIP
  type: NodePort
  ports:
    - port: 3306
      targetPort: 3306
      protocol: TCP
      name: mysql
  selector:
    app.kubernetes.io/name: mysql
    app.kubernetes.io/instance: mysql

4、執行操作並發布

# kubectl apply -f ../mysql/
# kubectl get pod,svc,cm |grep mysql
pod/mysql-7bf949d4b6-q68dh      1/1     Running   0          12m
service/mysql         NodePort    10.244.77.223    <none>        3306:31058/TCP                   28m
configmap/mysql-config       1      42m

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM