参考网址:
https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal
1.复制两个文件
https://github.com/kubernetes/ingress-nginx/blob/nginx-0.28.0/deploy/static/mandatory.yaml
https://github.com/kubernetes/ingress-nginx/blob/nginx-0.28.0/deploy/baremetal/service-nodeport.yaml
其中mandatory.yaml文件中,镜像quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0需要手动去阿里云或者其他镜像仓库自行下载后再打tag。也可以直接修改mandatory.yaml文件中image的值。还要修改mandatory.yaml文件中镜像的拉取策略,改为imagePullPolicy: IfNotPresent
2.在k8smaster节点执行
kubectl apply -f mandatory.yaml
kubectl apply -f service-nodeport.yaml
这时候nginx ingress controller已经安装好了。可以执行以下命令查看安装的情况
kubectl get pods --all-namespaces -l app.kubernetes.io/name=ingress-nginx --watchOnce the operator pods are running, you can cancel the above command by typing Ctrl+C. Now, you are ready to create your first ingress.
可以执行以下命令查看nginx ingress controller的版本
POD_NAMESPACE=ingress-nginxPOD_NAME=$(kubectl get pods -n $POD_NAMESPACE -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}')kubectl exec -it $POD_NAME -n $POD_NAMESPACE -- /nginx-ingress-controller --version k8s部署Eureka安装好了ingress controller后,就可以将service用ingress暴露出来使用了。
1.首先要有一个service:
2.其次需要一个ingress。
apiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata: name: ingress-eureka namespace: springcloud-demo annotations: kubernetes.io/ingress.class: "nginx"spec: rules: - http: paths: - path: / backend: serviceName: $NAME servicePort: 8761这些k8s对象创建完之后,就可以通过以下命令查看service-nodeport暴露出来的端口:
kubectl get svc -n ingress-nginx通过这个端口和ingress配置的path访问指定的service。
关于ingress配置,参考:
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/