【问题标题】:How to Exposing app in kubernetes with consul如何使用 consul 在 Kubernetes 中公开应用程序
【发布时间】:2018-12-26 02:43:40
【问题描述】:

我们已经通过 helm 图表在 k8 集群上安装了 consul。在这里,我部署了一台 consul 服务器,其余的是 consul 代理。

kubectl get pods
NAME                                                          READY     STATUS      RESTARTS   AGE
consul-7csp9                                                  1/1       Running     0          4h
consul-connect-injector-webhook-deployment-66d46867f6-wqtt7   1/1       Running     0          4h
consul-server-0                                               1/1       Running     0          4h
consul-sync-catalog-85f5654b89-9qblx                          1/1       Running     0          4h
consul-x4mqq                                                  1/1       Running     0          4h

我们看到节点已注册到 Consul 服务器。 http://XX.XX.XX.XX/ui/kube/nodes

我们已经在 k8 集群上部署了一个 hello world 应用程序。这将调出 Hello-World

kubectl get pods
NAME                                                          READY     STATUS      RESTARTS   AGE
consul-7csp9                                                  1/1       Running     0          4h
consul-connect-injector-webhook-deployment-66d46867f6-wqtt7   1/1       Running     0          4h
consul-server-0                                               1/1       Running     0          4h
consul-sync-catalog-85f5654b89-9qblx                          1/1       Running     0          4h
consul-x4mqq                                                  1/1       Running     0          4h
sampleapp-69bf9f84-ms55k                                      2/2       Running     0          4h

下面是yaml文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sampleapp
spec:
  replicas: 1
selector:
matchLabels:
  app: sampleapp
template:
  metadata:
    labels:
      app: sampleapp
    annotations:
      "consul.hashicorp.com/connect-inject": "true"
  spec:
    containers:
    - name: sampleapp
      image: "docker-dev-repo.aws.com/sampleapp-java/helloworld-service:a8c9f65-65"
      ports:
      - containerPort: 8080
        name: http

sampleapp部署成功,我看到在consul中注册了sampleapp-proxy。并且 sampleapp-proxy 列在 kubernetes 服务中。 (这是因为在安装过程中toConsul和toK8S被传为true)

kubectl get services
NAME                          TYPE           CLUSTER-IP     EXTERNAL-IP                      PORT(S)                                                                   AGE
consul                        ExternalName   <none>         consul.service.test              <none>                                                                    4h
consul-connect-injector-svc   ClusterIP      XX.XX.XX.XX    <none>                           443/TCP                                                                   4h
consul-dns                    ClusterIP      XX.XX.XX.XX    <none>                           53/TCP,53/UDP                                                             4h
consul-server                 ClusterIP      None           <none>                           8500/TCP,8301/TCP,8301/UDP,8302/TCP,8302/UDP,8300/TCP,8600/TCP,8600/UDP   4h
consul-ui                     LoadBalancer   XX.XX.XX.XX    XX.XX.XX.XX                      80:32648/TCP                                                              4h
dns-test-proxy                ExternalName   <none>         dns-test-proxy.service.test      <none>                                                                    2h
fluentd-gcp-proxy             ExternalName   <none>         fluentd-gcp-proxy.service.test   <none>                                                                    33m
kubernetes                    ClusterIP      XX.XX.XX.XX    <none>                           443/TCP                                                                   5d
sampleapp-proxy               ExternalName   <none>         sampleapp-proxy.service.test     <none>                                                                    4h

如何访问我的示例应用程序?我应该再次将我的应用程序公开为 kube 服务吗?

之前,在没有 consul 的情况下,我们使用为 sampleapp 创建一个服务并将该服务公开为入口。使用 Ingress Loadbalancer,我们曾经访问我们的应用程序。

【问题讨论】:

    标签: kubernetes consul


    【解决方案1】:

    Consul 不提供任何新的方式来公开您的应用程序。您需要像以前一样创建入口负载均衡器。

    【讨论】:

    • 如果在这种情况下必须使用 ingress,那么 consul 服务发现的目的是什么?
    猜你喜欢
    • 2021-06-05
    • 2020-12-29
    • 2016-05-13
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2019-04-09
    • 2022-01-02
    • 2019-02-04
    相关资源
    最近更新 更多