我是 Kubernetes 新手。我正在使用 K8S 的 GKE 托管服务。有 2 个部署 nginx、httpd,并为这 2 个部署创建了 NodePort 服务。
我正在尝试为服务创建入口规则。nginx入口控制器是通过helm安装的。我有一个来自 freenom 的域,并将 Google 云 DNS 设置为使用静态公共 IP。当我尝试访问入口 URL(域/nginx)时,它给出:
“默认后端 - 404”
部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
labels:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
replicas: 1
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: httpd
labels:
name: httpd
spec:
selector:
matchLabels:
app: httpd
template:
metadata:
labels:
app: httpd
spec:
containers:
- …Run Code Online (Sandbox Code Playgroud) 我想在 kubernetes 集群内通过 https 运行我的应用程序,并通过 https 将其公开在集群外部。我创建了pod并公开了端口443。之后,我创建了一个ClusterIP服务,该服务连接到 port 上的 pod443并公开 port 443。最后,我创建了一个ingress连接到端口 上的服务的连接443。我在 GKE 上使用 Helm Chart 部署了所有这些资源。我使用NGINX Ingress控制器。您可以在此处找到该图表。
当我通过 https 在集群内部访问该应用程序时,它可以工作。
curl https://my-nginx.https-app-64-production --cacert /etc/nginx/ssl/tls.crt
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is …Run Code Online (Sandbox Code Playgroud) 我正在按照一些 k8s 文档设置入口服务,但我无法理解以下注释:
kubernetes.ip/ingress.class:
nginx.ingress.kubernetes.io/rewrite-target:
你知道这些注释的作用吗?
提前致谢。
我已经按照文档https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/中所述设置了 Nginx 控制器。我已经使用以下配置设置了 Ingress
入口类
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: nginx
# annotations:
# ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: nginx.org/ingress-controller
Run Code Online (Sandbox Code Playgroud)
入口
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: hn-service-ingress
spec:
ingressClassName: nginx
rules:
- host: hostnameservice.classpath.com
http:
paths:
- path: /test
backend:
serviceName: hostname-service
servicePort: 80
Run Code Online (Sandbox Code Playgroud)
下面是运行命令时的错误describe。我正进入(状态All hosts are taken by other resources
kubectl describe ingress hn-service-ingress
Name: hn-service-ingress
Namespace: pradeep
Address:
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- …Run Code Online (Sandbox Code Playgroud) 我有一个 Kubernetes 集群,运行在 1 个主节点、2 个工作节点的 Linux 服务器上。我有一个 HAProxy 将我的请求转发到 Nginx 控制器。我的完整设置位于公司代理后面。该公司代理中启用了 DNS 条目。请求将到达 nginx 控制器,但不会转发到服务。我按照许多教程的描述安装了入口控制器,其中的文件位于https://github.com/kubernetes/ingress-nginx。
我是堆栈溢出的新手,所以如果我应该提供更具体的信息,请告诉我。我希望有人能帮助我解决我的问题,提前谢谢你:D
我的 Ingress 缺少地址:
Name: app-ingress
Namespace: default
Address:
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
test.kubetest.lff.bybn.de
/abc app-service:80 (10.244.2.4:3000)
Annotations: kubernetes.io/ingress.class: nginx
Events: <none>
Run Code Online (Sandbox Code Playgroud)
Deployment、Service 和 Ingress、IngressClass、ConfigMap 的 Yaml 文件
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: app
name: app-blue
spec:
replicas: 1
selector:
matchLabels:
run: app
version: 0.0.1
template:
metadata:
labels:
run: app
version: 0.0.1
spec: …Run Code Online (Sandbox Code Playgroud) 我需要指定在使用 HELM 安装创建 Ingress Controller 时与 Nginx 服务关联的外部 IP:
helm install nginx-ingress ingress-nginx/ingress-nginx -f internal-ingress.yaml
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
Run Code Online (Sandbox Code Playgroud)
所以我想设置静态的 EXTERNAL-IP 地址,该地址可以在创建时看到:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-ingress-ingress-nginx-controller LoadBalancer 10.0.36.81 10.33.27.35 80:31312/TCP,443:30653/TCP 5d
Run Code Online (Sandbox Code Playgroud)
我需要这个,因为已经为此 IP 设置了 DNS 配置,我想避免再次进行此类配置。
nginx kubernetes kubernetes-helm kubernetes-ingress nginx-ingress
我部署了一个简单的测试ingress和一个externalName service使用kustomize. 部署工作正常,我得到了预期的结果,但是当describing它test-ingress显示错误时:<error: endpoints "test-external-service" not found>。看起来像是 k8s 的 bug。它显示此错误,但一切正常。
这是我的部署:
kustomization.yaml:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: platform
resources:
- test-ingress.yaml
- test-service.yaml
generatorOptions:
disableNameSuffixHash: true
Run Code Online (Sandbox Code Playgroud)
test-service.yaml:
apiVersion: v1
kind: Service
metadata:
name: test-external-service
namespace: platform
spec:
type: ExternalName
externalName: "some-working-external-elasticsearch-service"
Run Code Online (Sandbox Code Playgroud)
test-ingress.yaml:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: nginx-external
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_cache_bypass $http_upgrade;
spec:
rules:
- host: testapi.mydomain.com
http:
paths:
- path: …Run Code Online (Sandbox Code Playgroud) kubernetes google-kubernetes-engine kubernetes-ingress nginx-ingress
我有一个 Kubernetes 集群,其中包含一个 REST API 的有效 Ingress 配置。现在我想将端口转发到我的 mqtt 适配器添加到此配置中,但我在寻找将 TCP 规则添加到配置中的方法时遇到问题。Kubernetes 文档仅显示一个 HTTP 示例。https://kubernetes.io/docs/concepts/services-networking/ingress/
我对 Kubernetes 还很陌生,在适应其他配置时遇到了问题,因为我发现的任何内容看起来都与我在 Kubernetes 文档中找到的完全不同。
我使用了常规的 nginx Web 服务器和 LetsEncrypt 来保护 TCP 连接。我希望这也适用于入口控制器。
我的目标是通过 MQTT 使用 TLS 将消息发送到我的集群。有人有这方面的正确文档或知道如何添加配置吗?
我的配置如下:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ratings-web-ingress
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt
spec:
tls:
- hosts:
- example.com
secretName: ratings-web-cert
rules:
- host: example.com
http:
paths:
- backend:
serviceName: test-api
servicePort: 8080
path: /
Run Code Online (Sandbox Code Playgroud) 我是 Kubernetes 新手。在测试集群中设置 nginx-ingress。我们的一位资深人士路过并注意到以下情况。
# kubectl get services
...
ingress-ingress-nginx-controller-admission ClusterIP xx.xxx.xxx.xxx <none> 443/TCP
...
Run Code Online (Sandbox Code Playgroud)
那是什么,他问道。如果你不需要它,就把它扔掉。
在我把它撕掉并可能削弱我的测试集群之前..什么是ingress-nginx-controller-admission 以及为什么我需要它?
我正在 Udemy 学习课程,我是Kubernetes世界的新手,我正在尝试在 Kubernetes 中配置入口 nginx 控制器,但当我在指定的 URL 发送请求时,它返回404 未找到,我已经 10 天了试图解决这个问题,我看过类似的问题,但他们的答案都不适合我。当我更改文件中的某些内容时,我还使用Skaffold自动在 docker hub 上构建/部署映像。
我的快递应用服务器:
app.get('/api/users/currentuser', (req, res) => {
res.send('Hi there');
});
app.listen(3000, () => {
console.log('[Auth] - Listening on port 3000');
});
Run Code Online (Sandbox Code Playgroud)
入口-srv.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-srv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
rules:
- host: ticketing.com
http:
paths:
- path: /api/users/?(.*)
pathType: Prefix
backend:
service:
name: auth-srv
port:
number: 3000
Run Code Online (Sandbox Code Playgroud)
auth-depl.yaml(身份验证部署和 srv)
apiVersion: …Run Code Online (Sandbox Code Playgroud) nginx kubernetes kubernetes-ingress nginx-config nginx-ingress