gpt4 book ai didi

go-micro kubernetes greeter 示例 - 无法访问 greeter api 服务

转载 作者:IT王子 更新时间:2023-10-29 02:09:54 26 4
gpt4 key购买 nike

我正在尝试让这个 go-micro greeter 示例在 Kubernetes 上运行 https://github.com/micro/examples/tree/master/greeter

我可以在 docker 中本地运行它。但是,当我尝试通过 Kubernetes (http://{{external-ip}}/greeter/say/hello) 访问 greeter api 服务时,出现错误:{"id":"go.micro.api", "code":500,"detail":"not found","status":"内部服务器错误"

为了进行故障排除,我简化了场景,我只是希望能够通过 micro api 调用 go-micro api 服务。以下是我的设置:

API.go

package main

import (
"github.com/micro/go-micro"
api "github.com/micro/micro/api/proto"
"log"
k8s "github.com/micro/kubernetes/go/micro"

"context"
)

type Say struct {
}

//I just want to access this via the micro api on k8s via services external ip
func (s *Say) Hello(ctx context.Context, req *api.Request, rsp *api.Response) error {
rsp.StatusCode = 200
rsp.Body = "Hello"
return nil
}

func main() {
service := k8s.NewService(
micro.Name("default.greeter-api"),
)

service.Init()

service.Server().Handle(
service.Server().NewHandler(
&Say{},
),
)

if err := service.Run(); err != nil {
log.Fatal(err)
}
}

微API部署.yml

apiVersion: apps/v1
kind: Deployment
metadata:
name: micro
spec:
replicas: 1
selector:
matchLabels:
app: micro
template:
metadata:
labels:
app: micro
spec:
containers:
- name: micro
image: microhq/micro:kubernetes
args:
- "api"
- "--handler=rpc"
- "--namespace=default"
env:
- name: MICRO_API_ADDRESS
value: ":80"
ports:
- containerPort: 80
name: api-port

微API-svc.yml

apiVersion: v1
kind: Service
metadata:
name: micro
spec:
type: LoadBalancer
ports:
- name: api-http
port: 80
targetPort: "api-port"
protocol: TCP
selector:
app: micro

欢迎部署.yml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: greeter-api
spec:
replicas: 1
selector:
matchLabels:
app: greeter-api
template:
metadata:
labels:
app: greeter-api
spec:
containers:
- name: greeter-api-service
image: greeter-api:latest
imagePullPolicy: Always
command: [
"./greet",
"--selector=static",
"--server_address=:8080",
]
ports:
- containerPort: 8080
name: greet-port

问候-svc.yml

apiVersion: v1
kind: Service
metadata:
name: greet
labels:
app: greet
spec:
ports:
- port: 8080
protocol: TCP
selector:
app: greet

最佳答案

您的配置一切正常。

http://{{external-ip}}/greeter/say/hello), I get the error: {"id":"go.micro.api","code":500,"detail":"not found","status":"Internal Server Error"}

您在请求中只错过了端口号 8080,并尝试调用 rpc 服务而不是 greeter-api

关于go-micro kubernetes greeter 示例 - 无法访问 greeter api 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49936464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com