首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从本地机器访问kubernetes上的服务器?

如何从本地机器访问kubernetes上的服务器?
EN

Stack Overflow用户
提问于 2020-04-03 10:16:04
回答 1查看 187关注 0票数 0

我的公司有一个kubernetes平台,在这个平台上运行着一个名称空间ingress my_namespace

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
 name: ingress
 labels:
  app: ingress
spec:
 containers:
  - name: ingress
    image: docker:5000/mma/neurotec-ingress
    imagePullPolicy: Always

kubectl get pods -n my_namespace

代码语言:javascript
复制
NAME            READY   STATUS    RESTARTS   AGE
ingress         1/1     Running   1          11d

pod是一个监听端口8080的服务器。

我还定义了一种将豆荚出口到外部的服务:

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: ingress
  labels:
    app: ingress
spec:
  ports:
  - port: 8080
    protocol: TCP
  selector:
    app: ingress
  type: LoadBalancer

kubectl describe service -n my_namespace ingress

代码语言:javascript
复制
Name:              ingress
Namespace:         my_namespace
Labels:            app=ingress
Selector:          app=ingress
Type:              LoadBalancer
IP:                10.104.95.96
Port:              <unset>  8080/TCP
TargetPort:        8080/TCP
Endpoints:         10.16.1.232:8080

现在我想从本地计算机向服务器发送消息。我要做的第一件事是确保它的IP地址是可访问的。但是,一个简单的host command返回错误:

代码语言:javascript
复制
host 10.16.1.232
Host 10.16.1.232 not found: 3(NXDOMAIN)

host ingress.my_namespace.nt // .nt is company's prefix
Host ingress.my_namespace not found: 3(NXDOMAIN)

如果我尝试运行telepresence,它还会返回一个错误:

代码语言:javascript
复制
Looks like there's a bug in our code. Sorry about that!

Traceback (most recent call last):
  File "/usr/bin/telepresence/telepresence/cli.py", line 135, in crash_reporting
    yield
  File "/usr/bin/telepresence/telepresence/main.py", line 65, in main
    remote_info = start_proxy(runner)
  File "/usr/bin/telepresence/telepresence/proxy/__init__.py", line 138, in start_proxy
    run_id=run_id,
  File "/usr/bin/telepresence/telepresence/proxy/remote.py", line 144, in get_remote_info
    runner, deployment_name, deployment_type, run_id=run_id
  File "/usr/bin/telepresence/telepresence/proxy/remote.py", line 91, in get_deployment_json
    return json.loads(output)["items"][0]
IndexError: list index out of range

问题:如何从本地机器到达kubernetes上的服务器

EN

回答 1

Stack Overflow用户

发布于 2020-04-03 10:46:28

我认为你应该使用服务type: LoadBalancer。(不是ClusterIP)

来自kubernetes的文件

  • ClusterIP:在集群内部IP上公开服务。选择此值使服务只能从集群中访问。--这是默认的ServiceType。
  • LoadBalancer:使用云提供商的负载均衡器向外部公开服务。自动创建外部负载均衡器路由的NodePort和ClusterIP服务。

下面是我的样本装载机服务文件。我将端口80暴露在互联网上,并将端口80映射到带有标签run: my-web-portal端口8000的pod。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: my-web-portal-svc
  labels:
    run: my-web-portal-svc
spec:
  ports:
  - port: 80
    targetPort: 8000
    protocol: TCP
    name: port-80
  selector:
    run: my-web-portal
  type: LoadBalancer

这是我的部署yml文件

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-web-portal
spec:
  selector:
    matchLabels:
      run: my-web-portal
  replicas: 1

  template:
    metadata:
      labels:
        run: my-web-portal

    spec:
      containers:
      - name: backend
        image: xxxxxx-backend

要获取端点,我运行命令

代码语言:javascript
复制
kubectl describe service my-web-portal-svc

命令将打印用于连接到豆荚的端点。

代码语言:javascript
复制
Type:                     LoadBalancer
IP:                       10.100.108.141
LoadBalancer Ingress:     xxxxxxxxxxxxxx.us-west-2.elb.amazonaws.com

如果您有任何问题,请留下评论。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61009615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档