kubernetes - 我无法将我的入口与我的服务连接起来

标签 kubernetes google-cloud-platform

我的入口和我的服务有问题,当我连接到我的服务器的 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

关于kubernetes - 我无法将我的入口与我的服务连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52997748/

相关文章:

kubernetes - 访问 Kubernetes clusterIP 服务时请求超时

python - 为 GKE 身份验证生成的 token 缺少权限

google-cloud-platform - 如何使用 Google NLP 在单个注释中提取多个标签文本项

python-3.x - 如何设置云运行应用程序以在 python 中接收发布/订阅消息?

javascript - 如何通过上下文检测意图而不是在 Dialogflow 中查询输入

kubernetes - Cassandra群集连接每两次使用NoHostAvailable失败

docker - 如何根据 Kubernetes/Docker 事件发送警报?

dns - Kubernetes:VPN 服务器和 DNS 问题

jenkins - 如何在浏览器中访问Kubernetes NodePort服务?

MySQL lower_case_table_names = 1 和 Kubernetes yml 文件,MySQL 服务器启动错误