kubernetes - Mac 上 docker 上的单一服务入口
问题描述
全新的 K8s 在这里,我正在尝试将 Ingress 部署/连接到docker for local
(适用于 mac 的 docker)上的示例单一服务,并能够点击它来运行该服务
1- 示例服务如下所示(my_service.js
):
const express = require('express')
let app = express()
app.get('/', (req, res) => {
res.send('Hello service')
})
const PORT = process.env.PORT || 9000
app.listen(
PORT,
() => console.log('Listening')
)
我构建图像(使用 docker 文件):
docker build . -t sample-service-image
2- 现在从 K8s 的角度来看:这是部署文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-service
labels:
app: sample-service
spec:
replicas: 1
selector:
matchLabels:
app: sample-service
template:
metadata:
labels:
app: sample-service
spec:
containers:
- name: sample-service
image: sample-service-image
imagePullPolicy: Never
ports:
- containerPort: 9000
kubectl apply -f deployment.yaml
并将其作为服务公开:
kubectl expose deploy sample-service --type=NodePort
3- 现在来自 Ingress (ingress-sample.yaml) :
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-sample
spec:
backend:
serviceName: sample-service
servicePort: 80
kubectl create -f ingress-sample.yaml
[更新] 我从这里部署了一个入口控制器:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml
这就是我得到的
$kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
ingress-sample * localhost 80 8m
kubectl get services --all-namespaces | grep nginx
ingress-nginx ingress-nginx NodePort 10.106.47.48 <none> 80:31448/TCP,443:31512/TCP 2h
试图点击它,http://localhost:31448/
但我503
从 NGINX 得到......所以我猜它没有正确连接到sample-service
.
我应该如何点击 Ingress 才能调用示例服务?
解决方案
您需要Host
在点击服务时指定标题。例如
curl -H "HOST: abc" http://localhost:31448/
由于您的入口定义未指定任何主机配置,因此您可以传递任何值。
欲了解更多信息 -请参阅。
推荐阅读
- javascript - How to pass custom attributes onClick in React
- html - How do I implement draw with p5,js and instance Containers
- python - 通过云功能运行时在 Firestore 中出现问题
- r - 将 .Rmd 文件转换为 .pdf 文件的最佳方法
- typescript - 如何开玩笑地模拟函数声明?我在模拟声明为函数声明的函数时遇到 Typescript 错误
- c# - 如何获取用户的组名是使用 Microsoft Graph API 的成员?
- wxpython - Ubuntu 18.04的Python 3.6的虚拟环境无法安装wxPython 4.1.0
- jquery - 使用 jQuery 向 Spring Boot 发送 PUT AJAX 请求时不允许出现错误 405 方法?
- java - 我正在使用这个 cron "0 0 9 * * ?" 每天早上 9 点调度任务的表达式,
- android - 查看通过列表视图中的复选框选择了哪些项目