版本介绍
技术 | 版本 | |
---|---|---|
k8s | v1.17.4 | |
nginx ingress controller | 0.28.0 |
k8s安装nginx-ingress
参考网址:
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 --watch
Once 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-nginx
POD_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:
apiVersion: v1
kind: Service
metadata:
name: $NAME
namespace: $NS
spec:
clusterIP: None
ports:
- name: $NAME
port: 8761
selector:
app: $NAME
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: $NAME
namespace: $NS
spec:
replicas: 1
selector:
matchLabels:
app: $NAME
serviceName: $NAME
template:
metadata:
labels:
app: $NAME
spec:
imagePullSecrets:
- name: harborsecret
containers:
- name: $NAME
image: 192.168.254.131/springcloud-demo/eureka:latest
ports:
- protocol: TCP
containerPort: 8761
resources:
requests:
cpu: 0.5
memory: 256Mi
limits:
cpu: 1
memory: 1Gi
readinessProbe:
tcpSocket:
port: 8761
initialDelaySeconds: 60
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8761
initialDelaySeconds: 60
periodSeconds: 10
2.其次需要一个ingress。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
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/