kubernetes - 我无法将我的入口与我的服务连接起来
问题描述
我的入口和服务有问题,当我连接到服务器的 IP 时,我无法获得,我重定向到与端口 80 关联的服务,这是我的网站。我将配置文件和入口描述传递给您:
apiVersion: v1
kind: Namespace
metadata:
name: bookstack
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
service: mysql
name: mysql
namespace: bookstack
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
service: mysql
spec:
containers:
- env:
- name: MYSQL_DATABASE
value: bookstack
- name: MYSQL_PASS
value: pass
- name: MYSQL_ROOT_PASSWORD
value: root
- name: MYSQL_USER
value: user
image: mysql:5.7
name: mysql
ports:
- containerPort: 3306
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
labels:
service: mysql
name: mysql
namespace: bookstack
spec:
type: NodePort
ports:
- name: "3306"
port: 3306
targetPort: 3306
selector:
service: mysql
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: bookstack
name: bookstack
namespace: bookstack
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
labels:
app: bookstack
spec:
containers:
- env:
- name: namespace
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: podname
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: nodename
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: DB_DATABASE
value: bookstack
- name: DB_HOST
value: mysql
- name: DB_PASSWORD
value: root
- name: DB_USERNAME
value: root
image: solidnerd/bookstack:latest
name: bookstack
ports:
- name: http
containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
labels:
app: bookstack
name: bookstack
namespace: bookstack
spec:
type: NodePort
ports:
- name: http-port
port: 80
protocol: TCP
selector:
app: bookstack
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: http
namespace: bookstack
spec:
backend:
serviceName: bookstack
servicePort: http-port
这是我的入口上出现的内容:
Name: http
Namespace: bookstack
Address:
Default backend: bookstack:http-port (10.36.0.22:80)
Rules:
Host Path Backends
---- ---- --------
* * bookstack:http-port (10.36.0.22:80)
Annotations:
kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{},"name":"http","namespace":"bookstack"},"spec":{"backend":{"serviceName":"bookstack","servicePort":"http-port"}}}
Events: <none>
它没有返回任何外部 IP 来连接我,为什么会这样?我想避免使用 LoadBalancer 作为服务类型。
解决方案
主要问题是我没有激活 Google Kubernetes Engine 默认提供的平衡器,没有激活它我无法生成外部 IP,因为没有平衡器。有两种解决方案,要么激活 GKE 的默认负载均衡器,要么创建一种服务:LoadBalancer。
在部署中激活 readinessProbe 和 livenessProbe 也很重要。
一个例子:
readinessProbe:
httpGet:
path: /login
port: 80
initialDelaySeconds: 5
timeoutSeconds: 1
periodSeconds: 15
livenessProbe:
httpGet:
path: /login
port: 80
initialDelaySeconds: 15
timeoutSeconds: 1
periodSeconds: 15
推荐阅读
- sed - 使用 sed 命令替换一个自然数区间
- contact-form-7 - 联系表格 7 文本框高度
- sql-server - 如果表是堆,聚集索引是否会使插入速度变慢?
- angular - Jhipster nginx 'login/oauth2/code' 404 错误
- laravel - Laravel 角色和权限问题
- javascript - 使 array.filter 也过滤空值
- python - 为什么当我增加变量时这给了我 0,0
- python - 如何在同一列中连续减去前面的数据和后面的数据
- java - 从 MySQL (JDBC,JSP) 显示文本时如何设置 UTF-8 编码
- json - 正则表达式从键中删除空格而不是值