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