当前位置:   article > 正文

K8S(1.28)--部署ingress-nginx(1.9.1)_--election-id=ingress-nginx-leader

--election-id=ingress-nginx-leader

原文网址:K8S(1.28)--部署ingress-nginx(1.9.1)-CSDN博客

简介

本文介绍K8S部署ingress-nginx的方法。

本文使用的K8S和ingress-nginx都是最新的版本。

官网地址

https://kubernetes.github.io/ingress-nginx/deploy/

Ingress里Nginx的代理流程:

1.部署ingress-nginx-controller

1.下载Ingress-Nginx部署文件

1.确定版本

首先确定版本:https://github.com/kubernetes/ingress-nginx

我K8S是1.28,这里我下载的Ingress-Nginx版本是:v1.9.1(这是我试成功的最新的版本)

注意:我试过1.9.1以上的版本都失败了。

2.下载部署文件

访问:https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.1/deploy/static/provider/cloud/deploy.yaml

将它下载一下,这里我将它记录下来:

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. labels:
  5. app.kubernetes.io/instance: ingress-nginx
  6. app.kubernetes.io/name: ingress-nginx
  7. name: ingress-nginx
  8. ---
  9. apiVersion: v1
  10. automountServiceAccountToken: true
  11. kind: ServiceAccount
  12. metadata:
  13. labels:
  14. app.kubernetes.io/component: controller
  15. app.kubernetes.io/instance: ingress-nginx
  16. app.kubernetes.io/name: ingress-nginx
  17. app.kubernetes.io/part-of: ingress-nginx
  18. app.kubernetes.io/version: 1.9.1
  19. name: ingress-nginx
  20. namespace: ingress-nginx
  21. ---
  22. apiVersion: v1
  23. kind: ServiceAccount
  24. metadata:
  25. labels:
  26. app.kubernetes.io/component: admission-webhook
  27. app.kubernetes.io/instance: ingress-nginx
  28. app.kubernetes.io/name: ingress-nginx
  29. app.kubernetes.io/part-of: ingress-nginx
  30. app.kubernetes.io/version: 1.9.1
  31. name: ingress-nginx-admission
  32. namespace: ingress-nginx
  33. ---
  34. apiVersion: rbac.authorization.k8s.io/v1
  35. kind: Role
  36. metadata:
  37. labels:
  38. app.kubernetes.io/component: controller
  39. app.kubernetes.io/instance: ingress-nginx
  40. app.kubernetes.io/name: ingress-nginx
  41. app.kubernetes.io/part-of: ingress-nginx
  42. app.kubernetes.io/version: 1.9.1
  43. name: ingress-nginx
  44. namespace: ingress-nginx
  45. rules:
  46. - apiGroups:
  47. - ""
  48. resources:
  49. - namespaces
  50. verbs:
  51. - get
  52. - apiGroups:
  53. - ""
  54. resources:
  55. - configmaps
  56. - pods
  57. - secrets
  58. - endpoints
  59. verbs:
  60. - get
  61. - list
  62. - watch
  63. - apiGroups:
  64. - ""
  65. resources:
  66. - services
  67. verbs:
  68. - get
  69. - list
  70. - watch
  71. - apiGroups:
  72. - networking.k8s.io
  73. resources:
  74. - ingresses
  75. verbs:
  76. - get
  77. - list
  78. - watch
  79. - apiGroups:
  80. - networking.k8s.io
  81. resources:
  82. - ingresses/status
  83. verbs:
  84. - update
  85. - apiGroups:
  86. - networking.k8s.io
  87. resources:
  88. - ingressclasses
  89. verbs:
  90. - get
  91. - list
  92. - watch
  93. - apiGroups:
  94. - coordination.k8s.io
  95. resourceNames:
  96. - ingress-nginx-leader
  97. resources:
  98. - leases
  99. verbs:
  100. - get
  101. - update
  102. - apiGroups:
  103. - coordination.k8s.io
  104. resources:
  105. - leases
  106. verbs:
  107. - create
  108. - apiGroups:
  109. - ""
  110. resources:
  111. - events
  112. verbs:
  113. - create
  114. - patch
  115. - apiGroups:
  116. - discovery.k8s.io
  117. resources:
  118. - endpointslices
  119. verbs:
  120. - list
  121. - watch
  122. - get
  123. ---
  124. apiVersion: rbac.authorization.k8s.io/v1
  125. kind: Role
  126. metadata:
  127. labels:
  128. app.kubernetes.io/component: admission-webhook
  129. app.kubernetes.io/instance: ingress-nginx
  130. app.kubernetes.io/name: ingress-nginx
  131. app.kubernetes.io/part-of: ingress-nginx
  132. app.kubernetes.io/version: 1.9.1
  133. name: ingress-nginx-admission
  134. namespace: ingress-nginx
  135. rules:
  136. - apiGroups:
  137. - ""
  138. resources:
  139. - secrets
  140. verbs:
  141. - get
  142. - create
  143. ---
  144. apiVersion: rbac.authorization.k8s.io/v1
  145. kind: ClusterRole
  146. metadata:
  147. labels:
  148. app.kubernetes.io/instance: ingress-nginx
  149. app.kubernetes.io/name: ingress-nginx
  150. app.kubernetes.io/part-of: ingress-nginx
  151. app.kubernetes.io/version: 1.9.1
  152. name: ingress-nginx
  153. rules:
  154. - apiGroups:
  155. - ""
  156. resources:
  157. - configmaps
  158. - endpoints
  159. - nodes
  160. - pods
  161. - secrets
  162. - namespaces
  163. verbs:
  164. - list
  165. - watch
  166. - apiGroups:
  167. - coordination.k8s.io
  168. resources:
  169. - leases
  170. verbs:
  171. - list
  172. - watch
  173. - apiGroups:
  174. - ""
  175. resources:
  176. - nodes
  177. verbs:
  178. - get
  179. - apiGroups:
  180. - ""
  181. resources:
  182. - services
  183. verbs:
  184. - get
  185. - list
  186. - watch
  187. - apiGroups:
  188. - networking.k8s.io
  189. resources:
  190. - ingresses
  191. verbs:
  192. - get
  193. - list
  194. - watch
  195. - apiGroups:
  196. - ""
  197. resources:
  198. - events
  199. verbs:
  200. - create
  201. - patch
  202. - apiGroups:
  203. - networking.k8s.io
  204. resources:
  205. - ingresses/status
  206. verbs:
  207. - update
  208. - apiGroups:
  209. - networking.k8s.io
  210. resources:
  211. - ingressclasses
  212. verbs:
  213. - get
  214. - list
  215. - watch
  216. - apiGroups:
  217. - discovery.k8s.io
  218. resources:
  219. - endpointslices
  220. verbs:
  221. - list
  222. - watch
  223. - get
  224. ---
  225. apiVersion: rbac.authorization.k8s.io/v1
  226. kind: ClusterRole
  227. metadata:
  228. labels:
  229. app.kubernetes.io/component: admission-webhook
  230. app.kubernetes.io/instance: ingress-nginx
  231. app.kubernetes.io/name: ingress-nginx
  232. app.kubernetes.io/part-of: ingress-nginx
  233. app.kubernetes.io/version: 1.9.1
  234. name: ingress-nginx-admission
  235. rules:
  236. - apiGroups:
  237. - admissionregistration.k8s.io
  238. resources:
  239. - validatingwebhookconfigurations
  240. verbs:
  241. - get
  242. - update
  243. ---
  244. apiVersion: rbac.authorization.k8s.io/v1
  245. kind: RoleBinding
  246. metadata:
  247. labels:
  248. app.kubernetes.io/component: controller
  249. app.kubernetes.io/instance: ingress-nginx
  250. app.kubernetes.io/name: ingress-nginx
  251. app.kubernetes.io/part-of: ingress-nginx
  252. app.kubernetes.io/version: 1.9.1
  253. name: ingress-nginx
  254. namespace: ingress-nginx
  255. roleRef:
  256. apiGroup: rbac.authorization.k8s.io
  257. kind: Role
  258. name: ingress-nginx
  259. subjects:
  260. - kind: ServiceAccount
  261. name: ingress-nginx
  262. namespace: ingress-nginx
  263. ---
  264. apiVersion: rbac.authorization.k8s.io/v1
  265. kind: RoleBinding
  266. metadata:
  267. labels:
  268. app.kubernetes.io/component: admission-webhook
  269. app.kubernetes.io/instance: ingress-nginx
  270. app.kubernetes.io/name: ingress-nginx
  271. app.kubernetes.io/part-of: ingress-nginx
  272. app.kubernetes.io/version: 1.9.1
  273. name: ingress-nginx-admission
  274. namespace: ingress-nginx
  275. roleRef:
  276. apiGroup: rbac.authorization.k8s.io
  277. kind: Role
  278. name: ingress-nginx-admission
  279. subjects:
  280. - kind: ServiceAccount
  281. name: ingress-nginx-admission
  282. namespace: ingress-nginx
  283. ---
  284. apiVersion: rbac.authorization.k8s.io/v1
  285. kind: ClusterRoleBinding
  286. metadata:
  287. labels:
  288. app.kubernetes.io/instance: ingress-nginx
  289. app.kubernetes.io/name: ingress-nginx
  290. app.kubernetes.io/part-of: ingress-nginx
  291. app.kubernetes.io/version: 1.9.1
  292. name: ingress-nginx
  293. roleRef:
  294. apiGroup: rbac.authorization.k8s.io
  295. kind: ClusterRole
  296. name: ingress-nginx
  297. subjects:
  298. - kind: ServiceAccount
  299. name: ingress-nginx
  300. namespace: ingress-nginx
  301. ---
  302. apiVersion: rbac.authorization.k8s.io/v1
  303. kind: ClusterRoleBinding
  304. metadata:
  305. labels:
  306. app.kubernetes.io/component: admission-webhook
  307. app.kubernetes.io/instance: ingress-nginx
  308. app.kubernetes.io/name: ingress-nginx
  309. app.kubernetes.io/part-of: ingress-nginx
  310. app.kubernetes.io/version: 1.9.1
  311. name: ingress-nginx-admission
  312. roleRef:
  313. apiGroup: rbac.authorization.k8s.io
  314. kind: ClusterRole
  315. name: ingress-nginx-admission
  316. subjects:
  317. - kind: ServiceAccount
  318. name: ingress-nginx-admission
  319. namespace: ingress-nginx
  320. ---
  321. apiVersion: v1
  322. data:
  323. allow-snippet-annotations: "false"
  324. kind: ConfigMap
  325. metadata:
  326. labels:
  327. app.kubernetes.io/component: controller
  328. app.kubernetes.io/instance: ingress-nginx
  329. app.kubernetes.io/name: ingress-nginx
  330. app.kubernetes.io/part-of: ingress-nginx
  331. app.kubernetes.io/version: 1.9.1
  332. name: ingress-nginx-controller
  333. namespace: ingress-nginx
  334. ---
  335. apiVersion: v1
  336. kind: Service
  337. metadata:
  338. labels:
  339. app.kubernetes.io/component: controller
  340. app.kubernetes.io/instance: ingress-nginx
  341. app.kubernetes.io/name: ingress-nginx
  342. app.kubernetes.io/part-of: ingress-nginx
  343. app.kubernetes.io/version: 1.9.1
  344. name: ingress-nginx-controller
  345. namespace: ingress-nginx
  346. spec:
  347. externalTrafficPolicy: Local
  348. ipFamilies:
  349. - IPv4
  350. ipFamilyPolicy: SingleStack
  351. ports:
  352. - appProtocol: http
  353. name: http
  354. port: 80
  355. protocol: TCP
  356. targetPort: http
  357. - appProtocol: https
  358. name: https
  359. port: 443
  360. protocol: TCP
  361. targetPort: https
  362. selector:
  363. app.kubernetes.io/component: controller
  364. app.kubernetes.io/instance: ingress-nginx
  365. app.kubernetes.io/name: ingress-nginx
  366. type: LoadBalancer
  367. ---
  368. apiVersion: v1
  369. kind: Service
  370. metadata:
  371. labels:
  372. app.kubernetes.io/component: controller
  373. app.kubernetes.io/instance: ingress-nginx
  374. app.kubernetes.io/name: ingress-nginx
  375. app.kubernetes.io/part-of: ingress-nginx
  376. app.kubernetes.io/version: 1.9.1
  377. name: ingress-nginx-controller-admission
  378. namespace: ingress-nginx
  379. spec:
  380. ports:
  381. - appProtocol: https
  382. name: https-webhook
  383. port: 443
  384. targetPort: webhook
  385. selector:
  386. app.kubernetes.io/component: controller
  387. app.kubernetes.io/instance: ingress-nginx
  388. app.kubernetes.io/name: ingress-nginx
  389. type: ClusterIP
  390. ---
  391. apiVersion: apps/v1
  392. kind: Deployment
  393. metadata:
  394. labels:
  395. app.kubernetes.io/component: controller
  396. app.kubernetes.io/instance: ingress-nginx
  397. app.kubernetes.io/name: ingress-nginx
  398. app.kubernetes.io/part-of: ingress-nginx
  399. app.kubernetes.io/version: 1.9.1
  400. name: ingress-nginx-controller
  401. namespace: ingress-nginx
  402. spec:
  403. minReadySeconds: 0
  404. revisionHistoryLimit: 10
  405. selector:
  406. matchLabels:
  407. app.kubernetes.io/component: controller
  408. app.kubernetes.io/instance: ingress-nginx
  409. app.kubernetes.io/name: ingress-nginx
  410. strategy:
  411. rollingUpdate:
  412. maxUnavailable: 1
  413. type: RollingUpdate
  414. template:
  415. metadata:
  416. labels:
  417. app.kubernetes.io/component: controller
  418. app.kubernetes.io/instance: ingress-nginx
  419. app.kubernetes.io/name: ingress-nginx
  420. app.kubernetes.io/part-of: ingress-nginx
  421. app.kubernetes.io/version: 1.9.1
  422. spec:
  423. containers:
  424. - args:
  425. - /nginx-ingress-controller
  426. - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
  427. - --election-id=ingress-nginx-leader
  428. - --controller-class=k8s.io/ingress-nginx
  429. - --ingress-class=nginx
  430. - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
  431. - --validating-webhook=:8443
  432. - --validating-webhook-certificate=/usr/local/certificates/cert
  433. - --validating-webhook-key=/usr/local/certificates/key
  434. env:
  435. - name: POD_NAME
  436. valueFrom:
  437. fieldRef:
  438. fieldPath: metadata.name
  439. - name: POD_NAMESPACE
  440. valueFrom:
  441. fieldRef:
  442. fieldPath: metadata.namespace
  443. - name: LD_PRELOAD
  444. value: /usr/local/lib/libmimalloc.so
  445. image: registry.k8s.io/ingress-nginx/controller:v1.9.1@sha256:605a737877de78969493a4b1213b21de4ee425d2926906857b98050f57a95b25
  446. imagePullPolicy: IfNotPresent
  447. lifecycle:
  448. preStop:
  449. exec:
  450. command:
  451. - /wait-shutdown
  452. livenessProbe:
  453. failureThreshold: 5
  454. httpGet:
  455. path: /healthz
  456. port: 10254
  457. scheme: HTTP
  458. initialDelaySeconds: 10
  459. periodSeconds: 10
  460. successThreshold: 1
  461. timeoutSeconds: 1
  462. name: controller
  463. ports:
  464. - containerPort: 80
  465. name: http
  466. protocol: TCP
  467. - containerPort: 443
  468. name: https
  469. protocol: TCP
  470. - containerPort: 8443
  471. name: webhook
  472. protocol: TCP
  473. readinessProbe:
  474. failureThreshold: 3
  475. httpGet:
  476. path: /healthz
  477. port: 10254
  478. scheme: HTTP
  479. initialDelaySeconds: 10
  480. periodSeconds: 10
  481. successThreshold: 1
  482. timeoutSeconds: 1
  483. resources:
  484. requests:
  485. cpu: 100m
  486. memory: 90Mi
  487. securityContext:
  488. allowPrivilegeEscalation: true
  489. capabilities:
  490. add:
  491. - NET_BIND_SERVICE
  492. drop:
  493. - ALL
  494. runAsUser: 101
  495. volumeMounts:
  496. - mountPath: /usr/local/certificates/
  497. name: webhook-cert
  498. readOnly: true
  499. dnsPolicy: ClusterFirst
  500. nodeSelector:
  501. kubernetes.io/os: linux
  502. serviceAccountName: ingress-nginx
  503. terminationGracePeriodSeconds: 300
  504. volumes:
  505. - name: webhook-cert
  506. secret:
  507. secretName: ingress-nginx-admission
  508. ---
  509. apiVersion: batch/v1
  510. kind: Job
  511. metadata:
  512. labels:
  513. app.kubernetes.io/component: admission-webhook
  514. app.kubernetes.io/instance: ingress-nginx
  515. app.kubernetes.io/name: ingress-nginx
  516. app.kubernetes.io/part-of: ingress-nginx
  517. app.kubernetes.io/version: 1.9.1
  518. name: ingress-nginx-admission-create
  519. namespace: ingress-nginx
  520. spec:
  521. template:
  522. metadata:
  523. labels:
  524. app.kubernetes.io/component: admission-webhook
  525. app.kubernetes.io/instance: ingress-nginx
  526. app.kubernetes.io/name: ingress-nginx
  527. app.kubernetes.io/part-of: ingress-nginx
  528. app.kubernetes.io/version: 1.9.1
  529. name: ingress-nginx-admission-create
  530. spec:
  531. containers:
  532. - args:
  533. - create
  534. - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc
  535. - --namespace=$(POD_NAMESPACE)
  536. - --secret-name=ingress-nginx-admission
  537. env:
  538. - name: POD_NAMESPACE
  539. valueFrom:
  540. fieldRef:
  541. fieldPath: metadata.namespace
  542. image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b
  543. imagePullPolicy: IfNotPresent
  544. name: create
  545. securityContext:
  546. allowPrivilegeEscalation: false
  547. nodeSelector:
  548. kubernetes.io/os: linux
  549. restartPolicy: OnFailure
  550. securityContext:
  551. fsGroup: 2000
  552. runAsNonRoot: true
  553. runAsUser: 2000
  554. serviceAccountName: ingress-nginx-admission
  555. ---
  556. apiVersion: batch/v1
  557. kind: Job
  558. metadata:
  559. labels:
  560. app.kubernetes.io/component: admission-webhook
  561. app.kubernetes.io/instance: ingress-nginx
  562. app.kubernetes.io/name: ingress-nginx
  563. app.kubernetes.io/part-of: ingress-nginx
  564. app.kubernetes.io/version: 1.9.1
  565. name: ingress-nginx-admission-patch
  566. namespace: ingress-nginx
  567. spec:
  568. template:
  569. metadata:
  570. labels:
  571. app.kubernetes.io/component: admission-webhook
  572. app.kubernetes.io/instance: ingress-nginx
  573. app.kubernetes.io/name: ingress-nginx
  574. app.kubernetes.io/part-of: ingress-nginx
  575. app.kubernetes.io/version: 1.9.1
  576. name: ingress-nginx-admission-patch
  577. spec:
  578. containers:
  579. - args:
  580. - patch
  581. - --webhook-name=ingress-nginx-admission
  582. - --namespace=$(POD_NAMESPACE)
  583. - --patch-mutating=false
  584. - --secret-name=ingress-nginx-admission
  585. - --patch-failure-policy=Fail
  586. env:
  587. - name: POD_NAMESPACE
  588. valueFrom:
  589. fieldRef:
  590. fieldPath: metadata.namespace
  591. image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407@sha256:543c40fd093964bc9ab509d3e791f9989963021f1e9e4c9c7b6700b02bfb227b
  592. imagePullPolicy: IfNotPresent
  593. name: patch
  594. securityContext:
  595. allowPrivilegeEscalation: false
  596. nodeSelector:
  597. kubernetes.io/os: linux
  598. restartPolicy: OnFailure
  599. securityContext:
  600. fsGroup: 2000
  601. runAsNonRoot: true
  602. runAsUser: 2000
  603. serviceAccountName: ingress-nginx-admission
  604. ---
  605. apiVersion: networking.k8s.io/v1
  606. kind: IngressClass
  607. metadata:
  608. labels:
  609. app.kubernetes.io/component: controller
  610. app.kubernetes.io/instance: ingress-nginx
  611. app.kubernetes.io/name: ingress-nginx
  612. app.kubernetes.io/part-of: ingress-nginx
  613. app.kubernetes.io/version: 1.9.1
  614. name: nginx
  615. spec:
  616. controller: k8s.io/ingress-nginx
  617. ---
  618. apiVersion: networking.k8s.io/v1
  619. kind: NetworkPolicy
  620. metadata:
  621. labels:
  622. app.kubernetes.io/component: admission-webhook
  623. app.kubernetes.io/instance: ingress-nginx
  624. app.kubernetes.io/name: ingress-nginx
  625. app.kubernetes.io/part-of: ingress-nginx
  626. app.kubernetes.io/version: 1.9.1
  627. name: ingress-nginx-admission
  628. namespace: ingress-nginx
  629. spec:
  630. egress:
  631. - {}
  632. podSelector:
  633. matchLabels:
  634. app.kubernetes.io/component: admission-webhook
  635. app.kubernetes.io/instance: ingress-nginx
  636. app.kubernetes.io/name: ingress-nginx
  637. policyTypes:
  638. - Ingress
  639. - Egress
  640. ---
  641. apiVersion: admissionregistration.k8s.io/v1
  642. kind: ValidatingWebhookConfiguration
  643. metadata:
  644. labels:
  645. app.kubernetes.io/component: admission-webhook
  646. app.kubernetes.io/instance: ingress-nginx
  647. app.kubernetes.io/name: ingress-nginx
  648. app.kubernetes.io/part-of: ingress-nginx
  649. app.kubernetes.io/version: 1.9.1
  650. name: ingress-nginx-admission
  651. webhooks:
  652. - admissionReviewVersions:
  653. - v1
  654. clientConfig:
  655. service:
  656. name: ingress-nginx-controller-admission
  657. namespace: ingress-nginx
  658. path: /networking/v1/ingresses
  659. failurePolicy: Fail
  660. matchPolicy: Equivalent
  661. name: validate.nginx.ingress.kubernetes.io
  662. rules:
  663. - apiGroups:
  664. - networking.k8s.io
  665. apiVersions:
  666. - v1
  667. operations:
  668. - CREATE
  669. - UPDATE
  670. resources:
  671. - ingresses
  672. sideEffects: None

2.修改部署文件

1.修改镜像

默认镜像是registry.k8s.io,国内无法下载,只能替换成其他镜像。

方法是,去docker hub官网查找其他同版本的镜像,docker里的是可以下载的。详细方法见:这里

这里我修改为这三个版本:

  1. bitnami/nginx-ingress-controller:1.9.1(修改一处)
  2. dyrnq/kube-webhook-certgen:v20230407(修改两处)

如下图所示(红框内,-代表原来的值,+代表修改后的值)

2.修改网络模式

ingress是对外提供的,所以要与主机共享ip及端口,在Deployment添加一行配置:

hostNetwork: true

若不添加,后续使用域名:nodeport 访问;添加之后,直接使用域名访问(80和443端口)。 

如下图所示:

3.支持master节点部署 

我这里要支持在master节点部署,所以要加一个配置:

  1. tolerations: #设置能在master上部署
  2. - key: node-role.kubernetes.io/master
  3. operator: Exists

如下图所示:

修改后的结果

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. labels:
  5. app.kubernetes.io/instance: ingress-nginx
  6. app.kubernetes.io/name: ingress-nginx
  7. name: ingress-nginx
  8. ---
  9. apiVersion: v1
  10. automountServiceAccountToken: true
  11. kind: ServiceAccount
  12. metadata:
  13. labels:
  14. app.kubernetes.io/component: controller
  15. app.kubernetes.io/instance: ingress-nginx
  16. app.kubernetes.io/name: ingress-nginx
  17. app.kubernetes.io/part-of: ingress-nginx
  18. app.kubernetes.io/version: 1.9.1
  19. name: ingress-nginx
  20. namespace: ingress-nginx
  21. ---
  22. apiVersion: v1
  23. kind: ServiceAccount
  24. metadata:
  25. labels:
  26. app.kubernetes.io/component: admission-webhook
  27. app.kubernetes.io/instance: ingress-nginx
  28. app.kubernetes.io/name: ingress-nginx
  29. app.kubernetes.io/part-of: ingress-nginx
  30. app.kubernetes.io/version: 1.9.1
  31. name: ingress-nginx-admission
  32. namespace: ingress-nginx
  33. ---
  34. apiVersion: rbac.authorization.k8s.io/v1
  35. kind: Role
  36. metadata:
  37. labels:
  38. app.kubernetes.io/component: controller
  39. app.kubernetes.io/instance: ingress-nginx
  40. app.kubernetes.io/name: ingress-nginx
  41. app.kubernetes.io/part-of: ingress-nginx
  42. app.kubernetes.io/version: 1.9.1
  43. name: ingress-nginx
  44. namespace: ingress-nginx
  45. rules:
  46. - apiGroups:
  47. - ""
  48. resources:
  49. - namespaces
  50. verbs:
  51. - get
  52. - apiGroups:
  53. - ""
  54. resources:
  55. - configmaps
  56. - pods
  57. - secrets
  58. - endpoints
  59. verbs:
  60. - get
  61. - list
  62. - watch
  63. - apiGroups:
  64. - ""
  65. resources:
  66. - services
  67. verbs:
  68. - get
  69. - list
  70. - watch
  71. - apiGroups:
  72. - networking.k8s.io
  73. resources:
  74. - ingresses
  75. verbs:
  76. - get
  77. - list
  78. - watch
  79. - apiGroups:
  80. - networking.k8s.io
  81. resources:
  82. - ingresses/status
  83. verbs:
  84. - update
  85. - apiGroups:
  86. - networking.k8s.io
  87. resources:
  88. - ingressclasses
  89. verbs:
  90. - get
  91. - list
  92. - watch
  93. - apiGroups:
  94. - coordination.k8s.io
  95. resourceNames:
  96. - ingress-nginx-leader
  97. resources:
  98. - leases
  99. verbs:
  100. - get
  101. - update
  102. - apiGroups:
  103. - coordination.k8s.io
  104. resources:
  105. - leases
  106. verbs:
  107. - create
  108. - apiGroups:
  109. - ""
  110. resources:
  111. - events
  112. verbs:
  113. - create
  114. - patch
  115. - apiGroups:
  116. - discovery.k8s.io
  117. resources:
  118. - endpointslices
  119. verbs:
  120. - list
  121. - watch
  122. - get
  123. ---
  124. apiVersion: rbac.authorization.k8s.io/v1
  125. kind: Role
  126. metadata:
  127. labels:
  128. app.kubernetes.io/component: admission-webhook
  129. app.kubernetes.io/instance: ingress-nginx
  130. app.kubernetes.io/name: ingress-nginx
  131. app.kubernetes.io/part-of: ingress-nginx
  132. app.kubernetes.io/version: 1.9.1
  133. name: ingress-nginx-admission
  134. namespace: ingress-nginx
  135. rules:
  136. - apiGroups:
  137. - ""
  138. resources:
  139. - secrets
  140. verbs:
  141. - get
  142. - create
  143. ---
  144. apiVersion: rbac.authorization.k8s.io/v1
  145. kind: ClusterRole
  146. metadata:
  147. labels:
  148. app.kubernetes.io/instance: ingress-nginx
  149. app.kubernetes.io/name: ingress-nginx
  150. app.kubernetes.io/part-of: ingress-nginx
  151. app.kubernetes.io/version: 1.9.1
  152. name: ingress-nginx
  153. rules:
  154. - apiGroups:
  155. - ""
  156. resources:
  157. - configmaps
  158. - endpoints
  159. - nodes
  160. - pods
  161. - secrets
  162. - namespaces
  163. verbs:
  164. - list
  165. - watch
  166. - apiGroups:
  167. - coordination.k8s.io
  168. resources:
  169. - leases
  170. verbs:
  171. - list
  172. - watch
  173. - apiGroups:
  174. - ""
  175. resources:
  176. - nodes
  177. verbs:
  178. - get
  179. - apiGroups:
  180. - ""
  181. resources:
  182. - services
  183. verbs:
  184. - get
  185. - list
  186. - watch
  187. - apiGroups:
  188. - networking.k8s.io
  189. resources:
  190. - ingresses
  191. verbs:
  192. - get
  193. - list
  194. - watch
  195. - apiGroups:
  196. - ""
  197. resources:
  198. - events
  199. verbs:
  200. - create
  201. - patch
  202. - apiGroups:
  203. - networking.k8s.io
  204. resources:
  205. - ingresses/status
  206. verbs:
  207. - update
  208. - apiGroups:
  209. - networking.k8s.io
  210. resources:
  211. - ingressclasses
  212. verbs:
  213. - get
  214. - list
  215. - watch
  216. - apiGroups:
  217. - discovery.k8s.io
  218. resources:
  219. - endpointslices
  220. verbs:
  221. - list
  222. - watch
  223. - get
  224. ---
  225. apiVersion: rbac.authorization.k8s.io/v1
  226. kind: ClusterRole
  227. metadata:
  228. labels:
  229. app.kubernetes.io/component: admission-webhook
  230. app.kubernetes.io/instance: ingress-nginx
  231. app.kubernetes.io/name: ingress-nginx
  232. app.kubernetes.io/part-of: ingress-nginx
  233. app.kubernetes.io/version: 1.9.1
  234. name: ingress-nginx-admission
  235. rules:
  236. - apiGroups:
  237. - admissionregistration.k8s.io
  238. resources:
  239. - validatingwebhookconfigurations
  240. verbs:
  241. - get
  242. - update
  243. ---
  244. apiVersion: rbac.authorization.k8s.io/v1
  245. kind: RoleBinding
  246. metadata:
  247. labels:
  248. app.kubernetes.io/component: controller
  249. app.kubernetes.io/instance: ingress-nginx
  250. app.kubernetes.io/name: ingress-nginx
  251. app.kubernetes.io/part-of: ingress-nginx
  252. app.kubernetes.io/version: 1.9.1
  253. name: ingress-nginx
  254. namespace: ingress-nginx
  255. roleRef:
  256. apiGroup: rbac.authorization.k8s.io
  257. kind: Role
  258. name: ingress-nginx
  259. subjects:
  260. - kind: ServiceAccount
  261. name: ingress-nginx
  262. namespace: ingress-nginx
  263. ---
  264. apiVersion: rbac.authorization.k8s.io/v1
  265. kind: RoleBinding
  266. metadata:
  267. labels:
  268. app.kubernetes.io/component: admission-webhook
  269. app.kubernetes.io/instance: ingress-nginx
  270. app.kubernetes.io/name: ingress-nginx
  271. app.kubernetes.io/part-of: ingress-nginx
  272. app.kubernetes.io/version: 1.9.1
  273. name: ingress-nginx-admission
  274. namespace: ingress-nginx
  275. roleRef:
  276. apiGroup: rbac.authorization.k8s.io
  277. kind: Role
  278. name: ingress-nginx-admission
  279. subjects:
  280. - kind: ServiceAccount
  281. name: ingress-nginx-admission
  282. namespace: ingress-nginx
  283. ---
  284. apiVersion: rbac.authorization.k8s.io/v1
  285. kind: ClusterRoleBinding
  286. metadata:
  287. labels:
  288. app.kubernetes.io/instance: ingress-nginx
  289. app.kubernetes.io/name: ingress-nginx
  290. app.kubernetes.io/part-of: ingress-nginx
  291. app.kubernetes.io/version: 1.9.1
  292. name: ingress-nginx
  293. roleRef:
  294. apiGroup: rbac.authorization.k8s.io
  295. kind: ClusterRole
  296. name: ingress-nginx
  297. subjects:
  298. - kind: ServiceAccount
  299. name: ingress-nginx
  300. namespace: ingress-nginx
  301. ---
  302. apiVersion: rbac.authorization.k8s.io/v1
  303. kind: ClusterRoleBinding
  304. metadata:
  305. labels:
  306. app.kubernetes.io/component: admission-webhook
  307. app.kubernetes.io/instance: ingress-nginx
  308. app.kubernetes.io/name: ingress-nginx
  309. app.kubernetes.io/part-of: ingress-nginx
  310. app.kubernetes.io/version: 1.9.1
  311. name: ingress-nginx-admission
  312. roleRef:
  313. apiGroup: rbac.authorization.k8s.io
  314. kind: ClusterRole
  315. name: ingress-nginx-admission
  316. subjects:
  317. - kind: ServiceAccount
  318. name: ingress-nginx-admission
  319. namespace: ingress-nginx
  320. ---
  321. apiVersion: v1
  322. data:
  323. allow-snippet-annotations: "false"
  324. kind: ConfigMap
  325. metadata:
  326. labels:
  327. app.kubernetes.io/component: controller
  328. app.kubernetes.io/instance: ingress-nginx
  329. app.kubernetes.io/name: ingress-nginx
  330. app.kubernetes.io/part-of: ingress-nginx
  331. app.kubernetes.io/version: 1.9.1
  332. name: ingress-nginx-controller
  333. namespace: ingress-nginx
  334. ---
  335. apiVersion: v1
  336. kind: Service
  337. metadata:
  338. labels:
  339. app.kubernetes.io/component: controller
  340. app.kubernetes.io/instance: ingress-nginx
  341. app.kubernetes.io/name: ingress-nginx
  342. app.kubernetes.io/part-of: ingress-nginx
  343. app.kubernetes.io/version: 1.9.1
  344. name: ingress-nginx-controller
  345. namespace: ingress-nginx
  346. spec:
  347. externalTrafficPolicy: Local
  348. ipFamilies:
  349. - IPv4
  350. ipFamilyPolicy: SingleStack
  351. ports:
  352. - appProtocol: http
  353. name: http
  354. port: 80
  355. protocol: TCP
  356. targetPort: http
  357. - appProtocol: https
  358. name: https
  359. port: 443
  360. protocol: TCP
  361. targetPort: https
  362. selector:
  363. app.kubernetes.io/component: controller
  364. app.kubernetes.io/instance: ingress-nginx
  365. app.kubernetes.io/name: ingress-nginx
  366. type: LoadBalancer
  367. ---
  368. apiVersion: v1
  369. kind: Service
  370. metadata:
  371. labels:
  372. app.kubernetes.io/component: controller
  373. app.kubernetes.io/instance: ingress-nginx
  374. app.kubernetes.io/name: ingress-nginx
  375. app.kubernetes.io/part-of: ingress-nginx
  376. app.kubernetes.io/version: 1.9.1
  377. name: ingress-nginx-controller-admission
  378. namespace: ingress-nginx
  379. spec:
  380. ports:
  381. - appProtocol: https
  382. name: https-webhook
  383. port: 443
  384. targetPort: webhook
  385. selector:
  386. app.kubernetes.io/component: controller
  387. app.kubernetes.io/instance: ingress-nginx
  388. app.kubernetes.io/name: ingress-nginx
  389. type: ClusterIP
  390. ---
  391. apiVersion: apps/v1
  392. kind: Deployment
  393. metadata:
  394. labels:
  395. app.kubernetes.io/component: controller
  396. app.kubernetes.io/instance: ingress-nginx
  397. app.kubernetes.io/name: ingress-nginx
  398. app.kubernetes.io/part-of: ingress-nginx
  399. app.kubernetes.io/version: 1.9.1
  400. name: ingress-nginx-controller
  401. namespace: ingress-nginx
  402. spec:
  403. minReadySeconds: 0
  404. revisionHistoryLimit: 10
  405. selector:
  406. matchLabels:
  407. app.kubernetes.io/component: controller
  408. app.kubernetes.io/instance: ingress-nginx
  409. app.kubernetes.io/name: ingress-nginx
  410. strategy:
  411. rollingUpdate:
  412. maxUnavailable: 1
  413. type: RollingUpdate
  414. template:
  415. metadata:
  416. labels:
  417. app.kubernetes.io/component: controller
  418. app.kubernetes.io/instance: ingress-nginx
  419. app.kubernetes.io/name: ingress-nginx
  420. app.kubernetes.io/part-of: ingress-nginx
  421. app.kubernetes.io/version: 1.9.1
  422. spec:
  423. hostNetwork: true #与宿主机共享网络
  424. tolerations: #设置能在master上部署
  425. - key: node-role.kubernetes.io/master
  426. operator: Exists
  427. containers:
  428. - args:
  429. - /nginx-ingress-controller
  430. - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
  431. - --election-id=ingress-nginx-leader
  432. - --controller-class=k8s.io/ingress-nginx
  433. - --ingress-class=nginx
  434. - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
  435. - --validating-webhook=:8443
  436. - --validating-webhook-certificate=/usr/local/certificates/cert
  437. - --validating-webhook-key=/usr/local/certificates/key
  438. env:
  439. - name: POD_NAME
  440. valueFrom:
  441. fieldRef:
  442. fieldPath: metadata.name
  443. - name: POD_NAMESPACE
  444. valueFrom:
  445. fieldRef:
  446. fieldPath: metadata.namespace
  447. - name: LD_PRELOAD
  448. value: /usr/local/lib/libmimalloc.so
  449. image: bitnami/nginx-ingress-controller:1.9.1
  450. imagePullPolicy: IfNotPresent
  451. lifecycle:
  452. preStop:
  453. exec:
  454. command:
  455. - /wait-shutdown
  456. livenessProbe:
  457. failureThreshold: 5
  458. httpGet:
  459. path: /healthz
  460. port: 10254
  461. scheme: HTTP
  462. initialDelaySeconds: 10
  463. periodSeconds: 10
  464. successThreshold: 1
  465. timeoutSeconds: 1
  466. name: controller
  467. ports:
  468. - containerPort: 80
  469. name: http
  470. protocol: TCP
  471. - containerPort: 443
  472. name: https
  473. protocol: TCP
  474. - containerPort: 8443
  475. name: webhook
  476. protocol: TCP
  477. readinessProbe:
  478. failureThreshold: 3
  479. httpGet:
  480. path: /healthz
  481. port: 10254
  482. scheme: HTTP
  483. initialDelaySeconds: 10
  484. periodSeconds: 10
  485. successThreshold: 1
  486. timeoutSeconds: 1
  487. resources:
  488. requests:
  489. cpu: 100m
  490. memory: 90Mi
  491. securityContext:
  492. allowPrivilegeEscalation: true
  493. capabilities:
  494. add:
  495. - NET_BIND_SERVICE
  496. drop:
  497. - ALL
  498. runAsUser: 101
  499. volumeMounts:
  500. - mountPath: /usr/local/certificates/
  501. name: webhook-cert
  502. readOnly: true
  503. dnsPolicy: ClusterFirst
  504. nodeSelector:
  505. kubernetes.io/os: linux
  506. serviceAccountName: ingress-nginx
  507. terminationGracePeriodSeconds: 300
  508. volumes:
  509. - name: webhook-cert
  510. secret:
  511. secretName: ingress-nginx-admission
  512. ---
  513. apiVersion: batch/v1
  514. kind: Job
  515. metadata:
  516. labels:
  517. app.kubernetes.io/component: admission-webhook
  518. app.kubernetes.io/instance: ingress-nginx
  519. app.kubernetes.io/name: ingress-nginx
  520. app.kubernetes.io/part-of: ingress-nginx
  521. app.kubernetes.io/version: 1.9.1
  522. name: ingress-nginx-admission-create
  523. namespace: ingress-nginx
  524. spec:
  525. template:
  526. metadata:
  527. labels:
  528. app.kubernetes.io/component: admission-webhook
  529. app.kubernetes.io/instance: ingress-nginx
  530. app.kubernetes.io/name: ingress-nginx
  531. app.kubernetes.io/part-of: ingress-nginx
  532. app.kubernetes.io/version: 1.9.1
  533. name: ingress-nginx-admission-create
  534. spec:
  535. containers:
  536. - args:
  537. - create
  538. - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc
  539. - --namespace=$(POD_NAMESPACE)
  540. - --secret-name=ingress-nginx-admission
  541. env:
  542. - name: POD_NAMESPACE
  543. valueFrom:
  544. fieldRef:
  545. fieldPath: metadata.namespace
  546. image: dyrnq/kube-webhook-certgen:v20230407
  547. imagePullPolicy: IfNotPresent
  548. name: create
  549. securityContext:
  550. allowPrivilegeEscalation: false
  551. nodeSelector:
  552. kubernetes.io/os: linux
  553. restartPolicy: OnFailure
  554. securityContext:
  555. fsGroup: 2000
  556. runAsNonRoot: true
  557. runAsUser: 2000
  558. serviceAccountName: ingress-nginx-admission
  559. ---
  560. apiVersion: batch/v1
  561. kind: Job
  562. metadata:
  563. labels:
  564. app.kubernetes.io/component: admission-webhook
  565. app.kubernetes.io/instance: ingress-nginx
  566. app.kubernetes.io/name: ingress-nginx
  567. app.kubernetes.io/part-of: ingress-nginx
  568. app.kubernetes.io/version: 1.9.1
  569. name: ingress-nginx-admission-patch
  570. namespace: ingress-nginx
  571. spec:
  572. template:
  573. metadata:
  574. labels:
  575. app.kubernetes.io/component: admission-webhook
  576. app.kubernetes.io/instance: ingress-nginx
  577. app.kubernetes.io/name: ingress-nginx
  578. app.kubernetes.io/part-of: ingress-nginx
  579. app.kubernetes.io/version: 1.9.1
  580. name: ingress-nginx-admission-patch
  581. spec:
  582. containers:
  583. - args:
  584. - patch
  585. - --webhook-name=ingress-nginx-admission
  586. - --namespace=$(POD_NAMESPACE)
  587. - --patch-mutating=false
  588. - --secret-name=ingress-nginx-admission
  589. - --patch-failure-policy=Fail
  590. env:
  591. - name: POD_NAMESPACE
  592. valueFrom:
  593. fieldRef:
  594. fieldPath: metadata.namespace
  595. image: dyrnq/kube-webhook-certgen:v20230407
  596. imagePullPolicy: IfNotPresent
  597. name: patch
  598. securityContext:
  599. allowPrivilegeEscalation: false
  600. nodeSelector:
  601. kubernetes.io/os: linux
  602. restartPolicy: OnFailure
  603. securityContext:
  604. fsGroup: 2000
  605. runAsNonRoot: true
  606. runAsUser: 2000
  607. serviceAccountName: ingress-nginx-admission
  608. ---
  609. apiVersion: networking.k8s.io/v1
  610. kind: IngressClass
  611. metadata:
  612. labels:
  613. app.kubernetes.io/component: controller
  614. app.kubernetes.io/instance: ingress-nginx
  615. app.kubernetes.io/name: ingress-nginx
  616. app.kubernetes.io/part-of: ingress-nginx
  617. app.kubernetes.io/version: 1.9.1
  618. name: nginx
  619. spec:
  620. controller: k8s.io/ingress-nginx
  621. ---
  622. apiVersion: networking.k8s.io/v1
  623. kind: NetworkPolicy
  624. metadata:
  625. labels:
  626. app.kubernetes.io/component: admission-webhook
  627. app.kubernetes.io/instance: ingress-nginx
  628. app.kubernetes.io/name: ingress-nginx
  629. app.kubernetes.io/part-of: ingress-nginx
  630. app.kubernetes.io/version: 1.9.1
  631. name: ingress-nginx-admission
  632. namespace: ingress-nginx
  633. spec:
  634. egress:
  635. - {}
  636. podSelector:
  637. matchLabels:
  638. app.kubernetes.io/component: admission-webhook
  639. app.kubernetes.io/instance: ingress-nginx
  640. app.kubernetes.io/name: ingress-nginx
  641. policyTypes:
  642. - Ingress
  643. - Egress
  644. ---
  645. apiVersion: admissionregistration.k8s.io/v1
  646. kind: ValidatingWebhookConfiguration
  647. metadata:
  648. labels:
  649. app.kubernetes.io/component: admission-webhook
  650. app.kubernetes.io/instance: ingress-nginx
  651. app.kubernetes.io/name: ingress-nginx
  652. app.kubernetes.io/part-of: ingress-nginx
  653. app.kubernetes.io/version: 1.9.1
  654. name: ingress-nginx-admission
  655. webhooks:
  656. - admissionReviewVersions:
  657. - v1
  658. clientConfig:
  659. service:
  660. name: ingress-nginx-controller-admission
  661. namespace: ingress-nginx
  662. path: /networking/v1/ingresses
  663. failurePolicy: Fail
  664. matchPolicy: Equivalent
  665. name: validate.nginx.ingress.kubernetes.io
  666. rules:
  667. - apiGroups:
  668. - networking.k8s.io
  669. apiVersions:
  670. - v1
  671. operations:
  672. - CREATE
  673. - UPDATE
  674. resources:
  675. - ingresses
  676. sideEffects: None

3.启动

kubectl apply -f deploy.yaml

命令结果:

用命令查看启动结果

kubectl get all -n ingress-nginx

 

用dashboard查看启动结果

 

2.部署应用程序

本处部署一个nginx和一个tomcat。

上边是文章的部分内容,为便于维护,全文已转移到此网址:K8S(1.28)-部署ingress-nginx(1.9.1) - 自学精灵

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/701508
推荐阅读
相关标签
  

闽ICP备14008679号