我正在尝试使用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在服务似乎出现在列表中时不起作用?
2条答案
按热度按时间ztmd8pv51#
仅仅因为服务存在并不意味着部署成功。它说有一个分离舱没有运行。您的服务希望查找提供
app: mysql
的Pod,而您的部署将部署app: database
。由于您可能没有任何标签为app: mysql
的Pod,因此没有任何东西提供该服务。修复标签以匹配。
fivyi3re2#
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文件中定义了正确的标签