zoukankan      html  css  js  c++  java
  • kubeadm安装集群系列-6.ingress-nginx安装

     本安装暴露方式为hostnetwork,即暴露pod所在node的相应端口

    kubectl apply -f mandatory.yaml

      1 apiVersion: v1
      2 kind: Namespace
      3 metadata:
      4   name: ingress-nginx
      5   labels:
      6     app.kubernetes.io/name: ingress-nginx
      7     app.kubernetes.io/part-of: ingress-nginx
      8 
      9 ---
     10 
     11 kind: ConfigMap
     12 apiVersion: v1
     13 metadata:
     14   name: nginx-configuration
     15   namespace: ingress-nginx
     16   labels:
     17     app.kubernetes.io/name: ingress-nginx
     18     app.kubernetes.io/part-of: ingress-nginx
     19 
     20 ---
     21 kind: ConfigMap
     22 apiVersion: v1
     23 metadata:
     24   name: tcp-services
     25   namespace: ingress-nginx
     26   labels:
     27     app.kubernetes.io/name: ingress-nginx
     28     app.kubernetes.io/part-of: ingress-nginx
     29 
     30 ---
     31 kind: ConfigMap
     32 apiVersion: v1
     33 metadata:
     34   name: udp-services
     35   namespace: ingress-nginx
     36   labels:
     37     app.kubernetes.io/name: ingress-nginx
     38     app.kubernetes.io/part-of: ingress-nginx
     39 
     40 ---
     41 apiVersion: v1
     42 kind: ServiceAccount
     43 metadata:
     44   name: nginx-ingress-serviceaccount
     45   namespace: ingress-nginx
     46   labels:
     47     app.kubernetes.io/name: ingress-nginx
     48     app.kubernetes.io/part-of: ingress-nginx
     49 
     50 ---
     51 apiVersion: rbac.authorization.k8s.io/v1beta1
     52 kind: ClusterRole
     53 metadata:
     54   name: nginx-ingress-clusterrole
     55   labels:
     56     app.kubernetes.io/name: ingress-nginx
     57     app.kubernetes.io/part-of: ingress-nginx
     58 rules:
     59   - apiGroups:
     60       - ""
     61     resources:
     62       - configmaps
     63       - endpoints
     64       - nodes
     65       - pods
     66       - secrets
     67     verbs:
     68       - list
     69       - watch
     70   - apiGroups:
     71       - ""
     72     resources:
     73       - nodes
     74     verbs:
     75       - get
     76   - apiGroups:
     77       - ""
     78     resources:
     79       - services
     80     verbs:
     81       - get
     82       - list
     83       - watch
     84   - apiGroups:
     85       - ""
     86     resources:
     87       - events
     88     verbs:
     89       - create
     90       - patch
     91   - apiGroups:
     92       - "extensions"
     93       - "networking.k8s.io"
     94     resources:
     95       - ingresses
     96     verbs:
     97       - get
     98       - list
     99       - watch
    100   - apiGroups:
    101       - "extensions"
    102       - "networking.k8s.io"
    103     resources:
    104       - ingresses/status
    105     verbs:
    106       - update
    107 
    108 ---
    109 apiVersion: rbac.authorization.k8s.io/v1beta1
    110 kind: Role
    111 metadata:
    112   name: nginx-ingress-role
    113   namespace: ingress-nginx
    114   labels:
    115     app.kubernetes.io/name: ingress-nginx
    116     app.kubernetes.io/part-of: ingress-nginx
    117 rules:
    118   - apiGroups:
    119       - ""
    120     resources:
    121       - configmaps
    122       - pods
    123       - secrets
    124       - namespaces
    125     verbs:
    126       - get
    127   - apiGroups:
    128       - ""
    129     resources:
    130       - configmaps
    131     resourceNames:
    132       # Defaults to "<election-id>-<ingress-class>"
    133       # Here: "<ingress-controller-leader>-<nginx>"
    134       # This has to be adapted if you change either parameter
    135       # when launching the nginx-ingress-controller.
    136       - "ingress-controller-leader-nginx"
    137     verbs:
    138       - get
    139       - update
    140   - apiGroups:
    141       - ""
    142     resources:
    143       - configmaps
    144     verbs:
    145       - create
    146   - apiGroups:
    147       - ""
    148     resources:
    149       - endpoints
    150     verbs:
    151       - get
    152 
    153 ---
    154 apiVersion: rbac.authorization.k8s.io/v1beta1
    155 kind: RoleBinding
    156 metadata:
    157   name: nginx-ingress-role-nisa-binding
    158   namespace: ingress-nginx
    159   labels:
    160     app.kubernetes.io/name: ingress-nginx
    161     app.kubernetes.io/part-of: ingress-nginx
    162 roleRef:
    163   apiGroup: rbac.authorization.k8s.io
    164   kind: Role
    165   name: nginx-ingress-role
    166 subjects:
    167   - kind: ServiceAccount
    168     name: nginx-ingress-serviceaccount
    169     namespace: ingress-nginx
    170 
    171 ---
    172 apiVersion: rbac.authorization.k8s.io/v1beta1
    173 kind: ClusterRoleBinding
    174 metadata:
    175   name: nginx-ingress-clusterrole-nisa-binding
    176   labels:
    177     app.kubernetes.io/name: ingress-nginx
    178     app.kubernetes.io/part-of: ingress-nginx
    179 roleRef:
    180   apiGroup: rbac.authorization.k8s.io
    181   kind: ClusterRole
    182   name: nginx-ingress-clusterrole
    183 subjects:
    184   - kind: ServiceAccount
    185     name: nginx-ingress-serviceaccount
    186     namespace: ingress-nginx
    187 
    188 ---
    189 
    190 apiVersion: apps/v1
    191 kind: Deployment
    192 metadata:
    193   name: nginx-ingress-controller
    194   namespace: ingress-nginx
    195   labels:
    196     app.kubernetes.io/name: ingress-nginx
    197     app.kubernetes.io/part-of: ingress-nginx
    198 spec:
    199   replicas: 1
    200   selector:
    201     matchLabels:
    202       app.kubernetes.io/name: ingress-nginx
    203       app.kubernetes.io/part-of: ingress-nginx
    204   template:
    205     metadata:
    206       labels:
    207         app.kubernetes.io/name: ingress-nginx
    208         app.kubernetes.io/part-of: ingress-nginx
    209       annotations:
    210         prometheus.io/port: "10254"
    211         prometheus.io/scrape: "true"
    212     spec:
    213       serviceAccountName: nginx-ingress-serviceaccount
    214       hostNetwork: true
    215       nodeSelector:
    216         nginx: host
    217       containers:
    218         - name: nginx-ingress-controller
    219           image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.1
    220           args:
    221             - /nginx-ingress-controller
    222             - --configmap=$(POD_NAMESPACE)/nginx-configuration
    223             - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
    224             - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
    225             - --publish-service=$(POD_NAMESPACE)/ingress-nginx
    226             - --annotations-prefix=nginx.ingress.kubernetes.io
    227           securityContext:
    228             allowPrivilegeEscalation: true
    229             capabilities:
    230               drop:
    231                 - ALL
    232               add:
    233                 - NET_BIND_SERVICE
    234             # www-data -> 33
    235             runAsUser: 33
    236           env:
    237             - name: POD_NAME
    238               valueFrom:
    239                 fieldRef:
    240                   fieldPath: metadata.name
    241             - name: POD_NAMESPACE
    242               valueFrom:
    243                 fieldRef:
    244                   fieldPath: metadata.namespace
    245           ports:
    246             - name: http
    247               containerPort: 80
    248             - name: https
    249               containerPort: 443
    250           livenessProbe:
    251             failureThreshold: 3
    252             httpGet:
    253               path: /healthz
    254               port: 10254
    255               scheme: HTTP
    256             initialDelaySeconds: 10
    257             periodSeconds: 10
    258             successThreshold: 1
    259             timeoutSeconds: 10
    260           readinessProbe:
    261             failureThreshold: 3
    262             httpGet:
    263               path: /healthz
    264               port: 10254
    265               scheme: HTTP
    266             periodSeconds: 10
    267             successThreshold: 1
    268             timeoutSeconds: 10
    269 
    270 ---
    mandatory.yaml

    kubectl apply -f service-nodeport.yaml

     1 apiVersion: v1
     2 kind: Service
     3 metadata:
     4   name: ingress-nginx
     5   namespace: ingress-nginx
     6   labels:
     7     app.kubernetes.io/name: ingress-nginx
     8     app.kubernetes.io/part-of: ingress-nginx
     9 spec:
    10   type: NodePort
    11   ports:
    12     - name: http
    13       port: 80
    14       targetPort: 80
    15       protocol: TCP
    16     - name: https
    17       port: 443
    18       targetPort: 443
    19       protocol: TCP
    20   selector:
    21     app.kubernetes.io/name: ingress-nginx
    22     app.kubernetes.io/part-of: ingress-nginx
    23 
    24 ---
    service-nodeport.yaml
    • 可以根据个人情况使用 nodeSelector 和 replicas 绑定到一台或多台node
    • 注意214行~216行,与官方文件略有变化
    • 此例暴露node的80和443端口

    参考

    官方文档:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/

  • 相关阅读:
    定时任务cron表达式解析
    dubbo admin的搭建(windows环境)
    搭建一个基于springboot的dubbo demo
    mysql考试成绩排名-关于@rowtotal、@rownum
    理解JMM及volatile关键字
    UnityLearn_Beginner_UnityTips
    UnityLearn_Beginner_UnityBasics
    Unity3D&Photon制作吃鸡游戏(未完)
    UNITY_UGUI
    UNITY_资源路径与加载外部文件
  • 原文地址:https://www.cnblogs.com/dolphintwo/p/12098353.html
Copyright © 2011-2022 走看看