我想部署Ingres实现nodeport,但我不知道该怎么做。
我尝试在Google和百度上找例子,但例子都太难理解了。
这是一个最简单的示例了,使用nginxdemos/ello的docker映像:
nginxdemos/ello
$docker run -p 80:80 -d nginxdemos/hello ... $curl -I http://localhost HTTP/1.1 200 OK Server: nginx/1.13.8 Date: Tue, 08 Oct 2019 06:14:52 GMT Content-Type: text/html Connection: keep-alive Expires: Tue, 08 Oct 2019 06:14:51 GMT Cache-Control: no-cache
这是后端Deployment:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-backend namespace: java2days spec: replicas: 2 selector: matchLabels: app: nginx-server template: metadata: labels: app: nginx-server spec: containers: - name: nginx-server image: nginxdemos/hello ports: - containerPort: 80 name: server-port livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 3 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 3
查看,确认pod运行正常,有2个nginx服务器的pod:
$kubectl get pods NAME READY STATUS RESTARTS AGE nginx-backend-dfcdb9797-dnx7x 1/1 Running 0 21m nginx-backend-dfcdb9797-pnrhn 1/1 Running 0 21m
最后,创建一个NodePort服务:
apiVersion: v1 kind: Service metadata: name: nginx-service namespace: java2days spec: ports: - port: 80 protocol: TCP targetPort: 80 name: http selector: app: nginx-server type: NodePort
注意selector,它必须要与后端服务匹配。 现在开始创建ingress。
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: nginx-ingress namespace: java2days spec: rules: - http: paths: - backend: serviceName: nginx-service servicePort: 80 path: /*
你必须等待大约5到10分钟,直到Ingress设置IP地址。就完成了,就像这样:
$kubectl get ingress NAME HOSTS ADDRESS PORTS AGE nginx-ingress * x.y.z.p 80 15m
然后你就可以访问了
$curl -I http://x.y.z.p HTTP/1.1 200 OK
可以正常访问了。 如果在游览器中多次刷新,则会看到服务器ID变化,说明负载均衡也ok了。
找不到想要的答案?提一个您自己的问题。
0 声望
这家伙太懒,什么都没留下
这是一个最简单的示例了,使用
nginxdemos/ello
的docker映像:$docker run -p 80:80 -d nginxdemos/hello ... $curl -I http://localhost HTTP/1.1 200 OK Server: nginx/1.13.8 Date: Tue, 08 Oct 2019 06:14:52 GMT Content-Type: text/html Connection: keep-alive Expires: Tue, 08 Oct 2019 06:14:51 GMT Cache-Control: no-cache
这是后端Deployment:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-backend namespace: java2days spec: replicas: 2 selector: matchLabels: app: nginx-server template: metadata: labels: app: nginx-server spec: containers: - name: nginx-server image: nginxdemos/hello ports: - containerPort: 80 name: server-port livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 3 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 15 periodSeconds: 15 timeoutSeconds: 3
查看,确认pod运行正常,有2个nginx服务器的pod:
$kubectl get pods NAME READY STATUS RESTARTS AGE nginx-backend-dfcdb9797-dnx7x 1/1 Running 0 21m nginx-backend-dfcdb9797-pnrhn 1/1 Running 0 21m
最后,创建一个NodePort服务:
apiVersion: v1 kind: Service metadata: name: nginx-service namespace: java2days spec: ports: - port: 80 protocol: TCP targetPort: 80 name: http selector: app: nginx-server type: NodePort
注意selector,它必须要与后端服务匹配。 现在开始创建ingress。
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: nginx-ingress namespace: java2days spec: rules: - http: paths: - backend: serviceName: nginx-service servicePort: 80 path: /*
你必须等待大约5到10分钟,直到Ingress设置IP地址。就完成了,就像这样:
$kubectl get ingress NAME HOSTS ADDRESS PORTS AGE nginx-ingress * x.y.z.p 80 15m
然后你就可以访问了
$curl -I http://x.y.z.p HTTP/1.1 200 OK
可以正常访问了。 如果在游览器中多次刷新,则会看到服务器ID变化,说明负载均衡也ok了。
你的答案