我有1个master和2个运行nginx的节点。这是节点的设置。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
然后我以此创建了服务。
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
我可以通过服务中的ClusterIP在两个节点上访问nginx。到目前为止一切顺利。
接下来,我想添加Ingress。我用过。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /?(.*)
backend:
serviceName: nginx-service
servicePort: 80
这是我遇到问题的地方。我曾以为我现在可以通过我的公共IP地址访问我的Nginx节点。我以为它将成为PUBLIC IP->服务群集IP-> Node IP。我的想法是正确的,但是我的Yaml文件中只有一个错误,还是我完全误解了应该发生的情况。我的目标是通过我的公共IP访问nginx。我正在使用数字海洋飞沫来做到这一点。我有3.用kubeadm初始化的集群。
我想您尚未在入口规则文件中添加主机名,可以尝试一下-
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
-host:{replace-me-with-hostname}
http:
paths:
- path: /?(.*)
backend:
serviceName: nginx-service
servicePort: 80
请参考this post,错误类似