我正试图在Kubernetes https://github.com/micro/examples/tree/master/greeter上得到这个更好的例子。
我可以在码头办好这个。但是,当我试图通过Kubernetes (http://{{external-ip}}/greeter/say/hello)访问greeter api服务时,我会得到错误:{"id":"go.micro.api",“go.micro.api”:500,"detail":"not“,”status“:”内部服务器错误“}
为了排除故障,我简化了场景,我只想通过微api调用一个go-micro服务。下面是我的设置:
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)
}
}micro-api-deployment.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-portmicro-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: microgreet-deployment.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-portgreet-svc.yml
apiVersion: v1
kind: Service
metadata:
name: greet
labels:
app: greet
spec:
ports:
- port: 8080
protocol: TCP
selector:
app: greet发布于 2018-04-20 15:50:41
你的倾诉一切都很好。
( http://{{external-ip}}/greeter/say/hello),我得到错误:{"id":"go.micro.api",“代码”:500,“详细”:“未找到”,“状态”:“内部服务器错误”}
您只忽略了请求中的端口号8080,并且尝试调用rpc服务而不是greeter-api。
https://stackoverflow.com/questions/49936464
复制相似问题