MySQL的Kubernetes部署

yizd12fk  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(2)|浏览(86)

我正在尝试使用mysql部署kubernetes,以便我可以从主机连接到它。
下面是部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: database
spec:
  replicas: 1
  selector:
    matchLabels:
      app: database
  template:
    metadata:
      labels:
        app: database
    spec:
      containers:
      - name: database
        image: mysql:5.6
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: password
        - name: MYSQL_USER 
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: username
        - name: MYSQL_PASSWORD 
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: password
        ports:
          - containerPort: 3306
            protocol: TCP
        resources:
          limits:
            cpu: "250m"
            memory: "1Gi"
      volumes:  
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  type: NodePort
  selector:
    app: mysql
  ports:
  - port: 3306
    targetPort: 3306
    nodePort: 32700
  externalIPs:
  - 1.2.4.8

如果我运行minikube service list,就会显示:

|----------------------|---------------------------|--------------|-----|
|      NAMESPACE       |           NAME            | TARGET PORT  | URL |
|----------------------|---------------------------|--------------|-----|
| default              | kubernetes                | No node port |     |
| default              | mysql                     |         3306 |     |
| kube-system          | kube-dns                  | No node port |     |
| kubernetes-dashboard | dashboard-metrics-scraper | No node port |     |
| kubernetes-dashboard | kubernetes-dashboard      | No node port |     |
|----------------------|---------------------------|--------------|-----|

如果我尝试minikube service mysql --url,它会给我:
由于SVC_UNREACHABLE而退出:服务不可用:没有找到服务mysql的运行pod
不知道该怎么办;
1.为什么它不提供给我外部IP 1.2.4.8
1.为什么不显示节点端口?
1.为什么--url在服务似乎出现在列表中时不起作用?

ztmd8pv5

ztmd8pv51#

仅仅因为服务存在并不意味着部署成功。它说有一个分离舱没有运行。您的服务希望查找提供app: mysql的Pod,而您的部署将部署app: database。由于您可能没有任何标签为app: mysql的Pod,因此没有任何东西提供该服务。
修复标签以匹配。

fivyi3re

fivyi3re2#

  1. Service所针对的Pod集合通常由您定义的选择器确定。由于您已经定义了选择器app: mysql,因此它正在扫描匹配此选择器的Pod,并且根据kubernetes文档 “服务的控制器持续扫描匹配其选择器的Pod,然后对服务的EndpointSlices集进行任何必要的更新”。您可以使用此命令kubectl get svc mysql -o yaml或minikube中的等效命令来确保您的服务定义。
    1.现在,将下面代码中部署yaml文件中定义的pod名称从database更改为mysql,反之亦然,在服务中从mysql更改为database。可以使用以下命令kubectl get deployment database -o yaml确保部署yaml文件中定义了正确的标签
template:
   metadata:
    labels:
      app: database

相关问题