k8s安装nginx-ingress controller+k8s部署Eureka

版本介绍

技术版本
k8sv1.17.4
nginx ingress controller0.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/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值