【问题标题】:Struggling with microk8s ingress and mapping与 microk8s 入口和映射作斗争
【发布时间】:2022-07-02 03:12:46
【问题描述】:

我已经使用一系列 docker 容器构建了一个进程,将快速简单的 Flutter 应用程序汇集到一个 kubernetes 集群中(这样我就可以使用集群的其余部分来运行后台工作类型进程)。我已经能够将它部署到我的 microk8s,但是如果不运行命令,我真的很难让它全部工作:

kubectl port-forward service/flutterapp 8080:8080

当我这样做时,它会运行一个交互式控制台,我可以在我的终端中看到该控制台,然后能够访问 localhost:8080 上的服务。我正在尝试将其设置为使用 localhost:80,所以我尝试使用我发现的各种不同的入口预配置(例如 istio、ha-proxy、入口),但我承认我有点一般来说,在 k8s 和网络方面是个菜鸟。到目前为止,这就是我想出的(我使用了我一直在阅读的教程之一中的虚拟图像来尝试解决这个问题)。这是我的基本 yml:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: flutterapp
  name: flutterapp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: flutterapp
  template:
    metadata:
      labels:
        app: flutterapp
    spec:
      containers:
        - name: flutterapp
          image: gcr.io/kuar-demo/kuard-amd64:blue
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8080
              name: http-flutterapp
              protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: flutterapp
spec:
  ports:
    - port: 8080
      protocol: TCP
      targetPort: http-flutterapp
  selector:
    app: flutterapp
  sessionAffinity: None
  type: LoadBalancer
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: flutterapp
spec:
  rules:
  - http:
      paths:
      - path: /flutterapp
        pathType: Prefix
        backend:
          service:
            name: flutterapp
            port:
              number: 8080

我认为我在做一些愚蠢且明显错误的事情,但我为这些东西阅读的一些文章正在使用 extensions/v1beta1 或其他各种 api,我正在努力让它们保持不变。

有什么建议吗?

【问题讨论】:

    标签: kubernetes kubernetes-ingress microk8s


    【解决方案1】:

    我能够在 microk8s 中使用 this 和 metallb 来完成这项工作(使用主机 IP 作为 metallb 范围):

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          app: app
        name: app
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: app
        template:
          metadata:
            labels:
              app: app
          spec:
            containers:
              - name: app
                image: docker.io/app:latest
                imagePullPolicy: Never
                ports:
                  - containerPort: 4040
                    name: http-app
                    protocol: TCP
                resources:
                  requests:
                    cpu: 250m
                    memory: 750Mi
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: app
      spec:
        ports:
          - port: 80
            protocol: TCP
            targetPort: 4040
        selector:
          app: app
        sessionAffinity: None
        type: LoadBalancer
      ---
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: app
      spec:
        ingressClassName: nginx
        rules:
        - http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  name: app
                  port:
                    number: 80
    

    【讨论】:

      猜你喜欢
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 2017-02-22
      • 2022-12-01
      • 2012-12-12
      • 2020-03-28
      相关资源
      最近更新 更多