【问题标题】:localstack k8s deployment yaml and health check endpointlocalstack k8s 部署 yaml 和健康检查端点
【发布时间】:2021-05-31 19:36:16
【问题描述】:

我已经设置了 win 10、minikube、docker。 我需要在本地 minikube 中启动 localstack。我没有找到k8s部署yaml。所以我把他们在 github 上提供的 docker compose yaml 拿去。并创建如下文件:

# disk volume claim
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  creationTimestamp: null
  labels:
    com.job.service: localstack-claim0
  name: localstack-claim0
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
status: {}
---
# service account
apiVersion: v1
kind: ServiceAccount
metadata:
  name: localstack-account
  labels:
    com.job.service: localstack-service-account
---
# service
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    com.job.service: localstack-service
  name: localstack-service
spec:
  type: NodePort
  externalTrafficPolicy: Cluster
  ports:
    - name: "edge"
      port: 4566
      targetPort: 4566
    - name: "es"
      port: 4571
      targetPort: 4571
    - name: "ui"
      port: 8080
      targetPort: 8080
  selector:
    com.job.service: localstack-service
status:
  loadBalancer: {}
---
# deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    com.job.service: localstack-deployment
  name: localstack-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      com.job.service: localstack-deployment
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        com.job.service: localstack-deployment
    spec:
      containers:
        - env:
            - name: DATA_DIR
              value: ' '
            - name: DEBUG
              value: ' '
            - name: DOCKER_HOST
              value: tcp://127.0.0.1:2376
            - name: HOST_TMP_FOLDER
            - name: KINESIS_ERROR_PROBABILITY
              value: ' '
            - name: LAMBDA_EXECUTOR
              value: ' '
            - name: PORT_WEB_UI
              value: ' '
            - name: SERVICES
              value: 'sqs'
          image: localstack/localstack
          imagePullPolicy: IfNotPresent
          name: localstack-main
          ports:
            - name: edge
              containerPort: 4566
              protocol: TCP
            - name: es
              containerPort: 4571
              protocol: TCP
            - name: ui
              containerPort: 8080
              protocol: TCP
          livenessProbe:
            failureThreshold: 3
            initialDelaySeconds: 0
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
            httpGet:
              path: /health
              port: edge
          readinessProbe:
            failureThreshold: 3
            initialDelaySeconds: 0
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
            httpGet:
              path: /health
              port: edge
          resources: {}
          volumeMounts:
            - mountPath: /tmp/localstack
              name: localstack-claim0
      restartPolicy: Always
      serviceAccountName: localstack-account
      volumes:
        - name: localstack-claim0
          persistentVolumeClaim:
            claimName: localstack-claim0
status: {}

但是当我开始使用 kubectl apply -f path_To_yaml 并等到所有服务启动时。我尝试到达健康检查端点,但我只收到无法连接到主机的异常

我尝试使用 minikube 隧道,但没有帮助

可能有人知道如何配置正确的本地化?我是 devops 的新手

尝试使用minikube addons enable ingress,但没有帮助我

尝试使用下一条命令手动公开和转发端口

kubectl expose pod localstack-deployment-7667b8d6bf-6mqbp --type=ClusterIP --name=localstack

和

kubectl port-forward po/localstack-deployment-7667b8d6bf-6mqbp 4566:4566

并与 aws cli 和 awslocal cli 连接;但同样的结果:无法连接

【问题讨论】:

  • 你好@faceoff。请问您是否可以直接kubectl port-forward 到吊舱?
  • 我手动尝试使用下一个命令:``` kubectl expose pod localstack-deployment-7667b8d6bf-6mqbp --type=ClusterIP --name=localstack ``` and ``` kubectl port-forward po/localstack-deployment-7667b8d6bf-6mqbp 4566:4566 ```然后尝试用aws cli连接,但总是一样无法连接
  • 谢谢@faceoff。我认为您的案例需要一些澄清,因为它现在有点令人困惑。您从 Minikube 开始,但现在您还提到了 AWS CLI。能否请您解释一下您究竟想要实现什么以及如何实现?
  • 我想用正确的清单在 minikube 中启动 localstack; Localstack 是 aws 的本地版本,所以我尝试通过 aws cli 联系 localstack
  • 你试过只使用nodePorts吗?我即将进行这样的部署+服务,并在服务上使用 nodePorts 以保持简单。你搞定了吗?

标签: kubernetes minikube localstack


【解决方案1】:

Kubernetes 集群需要有一个入口控制器来将来自外部世界的流量路由到

minikube addons enable ingress

以上将启用入口,当你执行'get pods

时你应该看到一个有效的入口控制器
NAME                                        READY     STATUS    RESTARTS   AGE
default-http-backend-59868b7dd6-xb8tq       1/1       Running   0          1m
kube-addon-manager-minikube                 1/1       Running   0          3m
kube-dns-6dcb57bcc8-n4xd4                   3/3       Running   0          2m
kubernetes-dashboard-5498ccf677-b8p5h       1/1       Running   0          2m
nginx-ingress-controller-5984b97644-rnkrg   1/1       Running   0          1m
storage-provisioner                         1/1       Running   0          2m

如果这仍然不能解决您的问题, 请发布有关以下 kubectl 命令的其他信息

kubectl describe ingress
kubectl describe service

这些命令的输出可能会进一步帮助您

【讨论】:

  • 不幸的是没有帮助 [![get pods -A][1]][1] [1]: imgur.com/7yjlqIs [![describe ingress][2]][2] [2 ]: imgur.com/zjHwguw [![描述服务][3]][3] [3]: imgur.com/IKb6rsN [![描述服务第 2 部分][4]][4] [4]: imgur.com/IbDYcEE
  • 你有没有注意到 ingress-nginx 中的两个 pod 没有处于 READY 状态,直到它们变为 ready ,入口服务将无法工作,这解释了为什么 describe ingress 命令返回 none。尝试调试为什么 pod 没有进入 READY
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 2020-11-16
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多