• 使用yaml来实现ingress-nginx


    创建一个ingress-nginx

    [root@k8s-master ingress]# cat ingress-nginx.yaml

    apiVersion: v1

    kind: Namespace

    metadata:

      name: ingress-nginx

    ---

    kind: ConfigMap

    apiVersion: v1

    metadata:

      name: nginx-configuration

      namespace: ingress-nginx

      labels:

        app.kubernetes.io/name: ingress-nginx

        app.kubernetes.io/part-of: ingress-nginx

    ---

    apiVersion: v1

    kind: ServiceAccount

    metadata:

      name: nginx-ingress-serviceaccount

      namespace: ingress-nginx

      labels:

        app.kubernetes.io/name: ingress-nginx

        app.kubernetes.io/part-of: ingress-nginx

    ---

    apiVersion: rbac.authorization.k8s.io/v1beta1

    kind: ClusterRole

    metadata:

      name: nginx-ingress-clusterrole

      labels:

        app.kubernetes.io/name: ingress-nginx

        app.kubernetes.io/part-of: ingress-nginx

    rules:

      - apiGroups:

          - ""

        resources:

          - configmaps

          - endpoints

          - nodes

          - pods

          - secrets

        verbs:

          - list

          - watch

      - apiGroups:

          - ""

        resources:

          - nodes

        verbs:

          - get

      - apiGroups:

          - ""

        resources:

          - services

        verbs:

          - get

          - list

          - watch

      - apiGroups:

          - "extensions"

        resources:

          - ingresses

        verbs:

          - get

          - list

          - watch

      - apiGroups:

          - ""

        resources:

          - events

        verbs:

          - create

          - patch

      - apiGroups:

          - "extensions"

        resources:

          - ingresses/status

        verbs:

          - update

    ---

    apiVersion: rbac.authorization.k8s.io/v1beta1

    kind: Role

    metadata:

      name: nginx-ingress-role

      namespace: ingress-nginx

      labels:

        app.kubernetes.io/name: ingress-nginx

        app.kubernetes.io/part-of: ingress-nginx

    rules:

      - apiGroups:

          - ""

        resources:

          - configmaps

          - pods

          - secrets

          - namespaces

        verbs:

          - get

      - apiGroups:

          - ""

        resources:

          - configmaps

        resourceNames:

          # Defaults to "<election-id>-<ingress-class>"

          # Here: "<ingress-controller-leader>-<nginx>"

          # This has to be adapted if you change either parameter

          # when launching the nginx-ingress-controller.

          - "ingress-controller-leader-nginx"

        verbs:

          - get

          - update

      - apiGroups:

          - ""

        resources:

          - configmaps

        verbs:

          - create

      - apiGroups:

          - ""

        resources:

          - endpoints

        verbs:

          - get

    ---

    apiVersion: rbac.authorization.k8s.io/v1beta1

    kind: RoleBinding

    metadata:

      name: nginx-ingress-role-nisa-binding

      namespace: ingress-nginx

      labels:

        app.kubernetes.io/name: ingress-nginx

        app.kubernetes.io/part-of: ingress-nginx

    roleRef:

      apiGroup: rbac.authorization.k8s.io

      kind: Role

      name: nginx-ingress-role

    subjects:

      - kind: ServiceAccount

        name: nginx-ingress-serviceaccount

        namespace: ingress-nginx

    ---

    apiVersion: rbac.authorization.k8s.io/v1beta1

    kind: ClusterRoleBinding

    metadata:

      name: nginx-ingress-clusterrole-nisa-binding

      labels:

        app.kubernetes.io/name: ingress-nginx

        app.kubernetes.io/part-of: ingress-nginx

    roleRef:

      apiGroup: rbac.authorization.k8s.io

      kind: ClusterRole

      name: nginx-ingress-clusterrole

    subjects:

      - kind: ServiceAccount

        name: nginx-ingress-serviceaccount

        namespace: ingress-nginx

    ---

    apiVersion: extensions/v1beta1

    kind: Deployment

    metadata:

      name: nginx-ingress-controller

      namespace: ingress-nginx

      labels:

        app.kubernetes.io/name: ingress-nginx

        app.kubernetes.io/part-of: ingress-nginx

    spec:

      replicas: 1

      selector:

        matchLabels:

          app.kubernetes.io/name: ingress-nginx

          app.kubernetes.io/part-of: ingress-nginx

      template:

        metadata:

          labels:

            app.kubernetes.io/name: ingress-nginx

            app.kubernetes.io/part-of: ingress-nginx

          annotations:

            prometheus.io/port: "10254"

            prometheus.io/scrape: "true"

        spec:

          serviceAccountName: nginx-ingress-serviceaccount

          hostNetwork: true

          containers:

            - name: nginx-ingress-controller

              image: lizhenliang/nginx-ingress-controller:0.20.0

              args:

                - /nginx-ingress-controller

                - --configmap=$(POD_NAMESPACE)/nginx-configuration

                - --publish-service=$(POD_NAMESPACE)/ingress-nginx

                - --annotations-prefix=nginx.ingress.kubernetes.io

              securityContext:

                capabilities:

                  drop:

                    - ALL

                  add:

                    - NET_BIND_SERVICE

                # www-data -> 33

                runAsUser: 33

              env:

                - name: POD_NAME

                  valueFrom:

                    fieldRef:

                      fieldPath: metadata.name

                - name: POD_NAMESPACE

                  valueFrom:

                    fieldRef:

                      fieldPath: metadata.namespace

              ports:

                - name: http

                  containerPort: 80

                - name: https

                  containerPort: 443

              livenessProbe:

                failureThreshold: 3

                httpGet:

                  path: /healthz

                  port: 10254

                  scheme: HTTP

                initialDelaySeconds: 10

                periodSeconds: 10

                successThreshold: 1

                timeoutSeconds: 1

              readinessProbe:

                failureThreshold: 3

                httpGet:

                  path: /healthz

                  port: 10254

                  scheme: HTTP

                periodSeconds: 10

                successThreshold: 1

                timeoutSeconds: 1

    ---

    这里有的执行完毕之后,可以ingress出现off状态,这里需要在你的kube-proxy配置文件添加--masquerade-all=true
    这里我是自己搭建的二进制k8s集群是这么添加的,其他的环境这里不做太多阐述

    node节点都需要重启并添加参数

    [root@k8s-node1 ~]# vim /opt/kubernetes/cfg/kube-proxy
    KUBE_PROXY_OPTS="--logtostderr=true
    --v=4
    --hostname-override=192.168.30.22
    --cluster-cidr=10.0.0.0/24
    --masquerade-all=true
    --kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfig"

    重启kube-proxy和kube-apiserver就可以了,查看ingress

    [root@k8s-master ~]# kubectl get pod -n ingress-nginx

    NAME                                       READY   STATUS    RESTARTS   AGE

    nginx-ingress-controller-bbb66b76b-2jszm   1/1     Running   0          48m

  • 相关阅读:
    JS基础_函数的简介
    frp 使用入门
    树莓派开启smb
    python 反射调用
    VIDEOIO ERROR: V4L: can't open camera by index 0 for raspberryPi
    face_recognition 人脸识别报错
    安装FFMpeg CentOS 7
    Centos 7 smb 安装使用
    ImportError: libQtTest.so.4: cannot open shared
    Raspberry Pi 3b+ 配置摄像头
  • 原文地址:https://www.cnblogs.com/zc1741845455/p/11302370.html
Copyright © 2020-2023  润新知