You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

579 lines
17 KiB

  1. ---
  2. kind: Deployment
  3. apiVersion: apps/v1
  4. metadata:
  5. name: kube-ovn-controller
  6. namespace: kube-system
  7. annotations:
  8. kubernetes.io/description: |
  9. kube-ovn controller
  10. spec:
  11. replicas: {{ kube_ovn_controller_replics }}
  12. selector:
  13. matchLabels:
  14. app: kube-ovn-controller
  15. strategy:
  16. rollingUpdate:
  17. maxSurge: 0%
  18. maxUnavailable: 100%
  19. type: RollingUpdate
  20. template:
  21. metadata:
  22. labels:
  23. app: kube-ovn-controller
  24. component: network
  25. type: infra
  26. spec:
  27. tolerations:
  28. - operator: Exists
  29. affinity:
  30. podAntiAffinity:
  31. requiredDuringSchedulingIgnoredDuringExecution:
  32. - labelSelector:
  33. matchLabels:
  34. app: kube-ovn-controller
  35. topologyKey: kubernetes.io/hostname
  36. priorityClassName: system-cluster-critical
  37. serviceAccountName: ovn
  38. hostNetwork: true
  39. containers:
  40. - name: kube-ovn-controller
  41. image: {{ kube_ovn_container_image_repo }}:{{ kube_ovn_container_image_tag }}
  42. imagePullPolicy: {{ k8s_image_pull_policy }}
  43. command:
  44. - /kube-ovn/start-controller.sh
  45. args:
  46. - --default-cidr={{ kube_pods_subnet }}{% if enable_dual_stack_networks %},{{ kube_ovn_pool_cidr_ipv6 | default(kube_pods_subnet_ipv6) }}{% endif %}{{''}}
  47. - --default-gateway={% if kube_ovn_default_gateway is defined %}{{ kube_ovn_default_gateway }}{% endif %}{{''}}
  48. - --default-gateway-check={{ kube_ovn_default_gateway_check|string }}
  49. - --default-logical-gateway={{ kube_ovn_default_logical_gateway|string }}
  50. - --default-exclude-ips={% if kube_ovn_default_exclude_ips is defined %}{{ kube_ovn_default_exclude_ips }}{% endif %}{{''}}
  51. - --node-switch-cidr={{ kube_ovn_node_switch_cidr }}{% if enable_dual_stack_networks %},{{ kube_ovn_node_switch_cidr_ipv6 }}{% endif %}{{''}}
  52. - --service-cluster-ip-range={{ kube_service_addresses }}{% if enable_dual_stack_networks %},{{ kube_service_addresses_ipv6 }}{% endif %}{{''}}
  53. - --network-type={{ kube_ovn_network_type }}
  54. - --default-interface-name={{ kube_ovn_default_interface_name|default('') }}
  55. - --default-vlan-id={{ kube_ovn_default_vlan_id }}
  56. - --pod-nic-type={{ kube_ovn_pod_nic_type }}
  57. - --enable-lb={{ kube_ovn_enable_lb|string }}
  58. - --enable-np={{ kube_ovn_enable_np|string }}
  59. - --enable-external-vpc={{ kube_ovn_enable_external_vpc|string }}
  60. - --logtostderr=false
  61. - --alsologtostderr=true
  62. - --log_file=/var/log/kube-ovn/kube-ovn-controller.log
  63. env:
  64. - name: ENABLE_SSL
  65. value: "{{ kube_ovn_enable_ssl | lower }}"
  66. - name: POD_NAME
  67. valueFrom:
  68. fieldRef:
  69. fieldPath: metadata.name
  70. - name: KUBE_NAMESPACE
  71. valueFrom:
  72. fieldRef:
  73. fieldPath: metadata.namespace
  74. - name: KUBE_NODE_NAME
  75. valueFrom:
  76. fieldRef:
  77. fieldPath: spec.nodeName
  78. volumeMounts:
  79. - mountPath: /etc/localtime
  80. name: localtime
  81. - mountPath: /var/log/kube-ovn
  82. name: kube-ovn-log
  83. - mountPath: /var/run/tls
  84. name: kube-ovn-tls
  85. readinessProbe:
  86. exec:
  87. command:
  88. - /kube-ovn/kube-ovn-controller-healthcheck
  89. periodSeconds: 3
  90. timeoutSeconds: 45
  91. livenessProbe:
  92. exec:
  93. command:
  94. - /kube-ovn/kube-ovn-controller-healthcheck
  95. initialDelaySeconds: 300
  96. periodSeconds: 7
  97. failureThreshold: 5
  98. timeoutSeconds: 45
  99. resources:
  100. requests:
  101. cpu: {{ kube_ovn_controller_cpu_request }}
  102. memory: {{ kube_ovn_controller_memory_request }}
  103. limits:
  104. cpu: {{ kube_ovn_controller_cpu_limit }}
  105. memory: {{ kube_ovn_controller_memory_limit }}
  106. nodeSelector:
  107. kubernetes.io/os: "linux"
  108. volumes:
  109. - name: localtime
  110. hostPath:
  111. path: /etc/localtime
  112. - name: kube-ovn-log
  113. hostPath:
  114. path: /var/log/kube-ovn
  115. - name: kube-ovn-tls
  116. secret:
  117. optional: true
  118. secretName: kube-ovn-tls
  119. ---
  120. kind: DaemonSet
  121. apiVersion: apps/v1
  122. metadata:
  123. name: kube-ovn-cni
  124. namespace: kube-system
  125. annotations:
  126. kubernetes.io/description: |
  127. This daemon set launches the kube-ovn cni daemon.
  128. spec:
  129. selector:
  130. matchLabels:
  131. app: kube-ovn-cni
  132. template:
  133. metadata:
  134. labels:
  135. app: kube-ovn-cni
  136. component: network
  137. type: infra
  138. spec:
  139. tolerations:
  140. - operator: Exists
  141. priorityClassName: system-cluster-critical
  142. serviceAccountName: ovn
  143. hostNetwork: true
  144. hostPID: true
  145. initContainers:
  146. - name: install-cni
  147. image: {{ kube_ovn_container_image_repo }}:{{ kube_ovn_container_image_tag }}
  148. imagePullPolicy: {{ k8s_image_pull_policy }}
  149. command: ["/kube-ovn/install-cni.sh"]
  150. securityContext:
  151. runAsUser: 0
  152. privileged: true
  153. volumeMounts:
  154. - mountPath: /opt/cni/bin
  155. name: cni-bin
  156. containers:
  157. - name: cni-server
  158. image: {{ kube_ovn_container_image_repo }}:{{ kube_ovn_container_image_tag }}
  159. imagePullPolicy: {{ k8s_image_pull_policy }}
  160. command:
  161. - bash
  162. - /kube-ovn/start-cniserver.sh
  163. args:
  164. - --enable-mirror={{ kube_ovn_traffic_mirror | lower }}
  165. - --encap-checksum={{ kube_ovn_encap_checksum | lower }}
  166. - --service-cluster-ip-range={{ kube_service_addresses }}{% if enable_dual_stack_networks %},{{ kube_service_addresses_ipv6 }}{% endif %}{{''}}
  167. - --iface={{ kube_ovn_iface|default('') }}
  168. - --network-type={{ kube_ovn_network_type }}
  169. - --default-interface-name={{ kube_ovn_default_interface_name|default('') }}
  170. {% if kube_ovn_mtu is defined %}
  171. - --mtu={{ kube_ovn_mtu }}
  172. {% endif %}
  173. - --logtostderr=false
  174. - --alsologtostderr=true
  175. - --log_file=/var/log/kube-ovn/kube-ovn-cni.log
  176. securityContext:
  177. runAsUser: 0
  178. privileged: true
  179. env:
  180. - name: kube_ovn_enable_ssl
  181. value: "{{ kube_ovn_enable_ssl | lower }}"
  182. - name: POD_IP
  183. valueFrom:
  184. fieldRef:
  185. fieldPath: status.podIP
  186. - name: KUBE_NODE_NAME
  187. valueFrom:
  188. fieldRef:
  189. fieldPath: spec.nodeName
  190. volumeMounts:
  191. - mountPath: /etc/openvswitch
  192. name: systemid
  193. - mountPath: /etc/cni/net.d
  194. name: cni-conf
  195. - mountPath: /run/openvswitch
  196. name: host-run-ovs
  197. - mountPath: /run/ovn
  198. name: host-run-ovn
  199. - mountPath: /var/run/netns
  200. name: host-ns
  201. mountPropagation: HostToContainer
  202. - mountPath: /var/log/kube-ovn
  203. name: kube-ovn-log
  204. - mountPath: /etc/localtime
  205. name: localtime
  206. readinessProbe:
  207. exec:
  208. command:
  209. - nc
  210. - -z
  211. - -w3
  212. - 127.0.0.1
  213. - "10665"
  214. periodSeconds: 3
  215. timeoutSeconds: 5
  216. livenessProbe:
  217. exec:
  218. command:
  219. - nc
  220. - -z
  221. - -w3
  222. - 127.0.0.1
  223. - "10665"
  224. initialDelaySeconds: 30
  225. periodSeconds: 7
  226. failureThreshold: 5
  227. timeoutSeconds: 5
  228. resources:
  229. requests:
  230. cpu: {{ kube_ovn_cni_server_cpu_request }}
  231. memory: {{ kube_ovn_cni_server_memory_request }}
  232. limits:
  233. cpu: {{ kube_ovn_cni_server_cpu_limit }}
  234. memory: {{ kube_ovn_cni_server_memory_limit }}
  235. nodeSelector:
  236. kubernetes.io/os: "linux"
  237. volumes:
  238. - name: systemid
  239. hostPath:
  240. path: /etc/origin/openvswitch
  241. - name: host-run-ovs
  242. hostPath:
  243. path: /run/openvswitch
  244. - name: host-run-ovn
  245. hostPath:
  246. path: /run/ovn
  247. - name: cni-conf
  248. hostPath:
  249. path: /etc/cni/net.d
  250. - name: cni-bin
  251. hostPath:
  252. path: /opt/cni/bin
  253. - name: host-ns
  254. hostPath:
  255. path: /var/run/netns
  256. - name: kube-ovn-log
  257. hostPath:
  258. path: /var/log/kube-ovn
  259. - name: localtime
  260. hostPath:
  261. path: /etc/localtime
  262. ---
  263. kind: DaemonSet
  264. apiVersion: apps/v1
  265. metadata:
  266. name: kube-ovn-pinger
  267. namespace: kube-system
  268. annotations:
  269. kubernetes.io/description: |
  270. This daemon set launches the openvswitch daemon.
  271. spec:
  272. selector:
  273. matchLabels:
  274. app: kube-ovn-pinger
  275. updateStrategy:
  276. type: RollingUpdate
  277. template:
  278. metadata:
  279. labels:
  280. app: kube-ovn-pinger
  281. component: network
  282. type: infra
  283. spec:
  284. serviceAccountName: ovn
  285. hostPID: true
  286. containers:
  287. - name: pinger
  288. image: {{ kube_ovn_container_image_repo }}:{{ kube_ovn_container_image_tag }}
  289. imagePullPolicy: {{ k8s_image_pull_policy }}
  290. command:
  291. - /kube-ovn/kube-ovn-pinger
  292. args:
  293. - --external-address={{ kube_ovn_external_address }}{% if enable_dual_stack_networks %},{{ kube_ovn_external_address_ipv6 }}{% endif %}{{''}}
  294. - --external-dns={{ kube_ovn_external_dns }}
  295. - --logtostderr=false
  296. - --alsologtostderr=true
  297. - --log_file=/var/log/kube-ovn/kube-ovn-pinger.log
  298. securityContext:
  299. runAsUser: 0
  300. privileged: false
  301. env:
  302. - name: ENABLE_SSL
  303. value: "{{ kube_ovn_enable_ssl | lower }}"
  304. - name: POD_IP
  305. valueFrom:
  306. fieldRef:
  307. fieldPath: status.podIP
  308. - name: HOST_IP
  309. valueFrom:
  310. fieldRef:
  311. fieldPath: status.hostIP
  312. - name: POD_NAME
  313. valueFrom:
  314. fieldRef:
  315. fieldPath: metadata.name
  316. - name: NODE_NAME
  317. valueFrom:
  318. fieldRef:
  319. fieldPath: spec.nodeName
  320. volumeMounts:
  321. - mountPath: /lib/modules
  322. name: host-modules
  323. readOnly: true
  324. - mountPath: /run/openvswitch
  325. name: host-run-ovs
  326. - mountPath: /var/run/openvswitch
  327. name: host-run-ovs
  328. - mountPath: /var/run/ovn
  329. name: host-run-ovn
  330. - mountPath: /sys
  331. name: host-sys
  332. readOnly: true
  333. - mountPath: /etc/openvswitch
  334. name: host-config-openvswitch
  335. - mountPath: /var/log/openvswitch
  336. name: host-log-ovs
  337. - mountPath: /var/log/ovn
  338. name: host-log-ovn
  339. - mountPath: /var/log/kube-ovn
  340. name: kube-ovn-log
  341. - mountPath: /etc/localtime
  342. name: localtime
  343. - mountPath: /var/run/tls
  344. name: kube-ovn-tls
  345. resources:
  346. requests:
  347. cpu: {{ kube_ovn_pinger_cpu_request }}
  348. memory: {{ kube_ovn_pinger_memory_request }}
  349. limits:
  350. cpu: {{ kube_ovn_pinger_cpu_limit }}
  351. memory: {{ kube_ovn_pinger_memory_limit }}
  352. nodeSelector:
  353. kubernetes.io/os: "linux"
  354. volumes:
  355. - name: host-modules
  356. hostPath:
  357. path: /lib/modules
  358. - name: host-run-ovs
  359. hostPath:
  360. path: /run/openvswitch
  361. - name: host-run-ovn
  362. hostPath:
  363. path: /run/ovn
  364. - name: host-sys
  365. hostPath:
  366. path: /sys
  367. - name: host-config-openvswitch
  368. hostPath:
  369. path: /etc/origin/openvswitch
  370. - name: host-log-ovs
  371. hostPath:
  372. path: /var/log/openvswitch
  373. - name: kube-ovn-log
  374. hostPath:
  375. path: /var/log/kube-ovn
  376. - name: host-log-ovn
  377. hostPath:
  378. path: /var/log/ovn
  379. - name: localtime
  380. hostPath:
  381. path: /etc/localtime
  382. - name: kube-ovn-tls
  383. secret:
  384. optional: true
  385. secretName: kube-ovn-tls
  386. ---
  387. kind: Deployment
  388. apiVersion: apps/v1
  389. metadata:
  390. name: kube-ovn-monitor
  391. namespace: kube-system
  392. annotations:
  393. kubernetes.io/description: |
  394. Metrics for OVN components: northd, nb and sb.
  395. spec:
  396. replicas: 1
  397. strategy:
  398. rollingUpdate:
  399. maxSurge: 1
  400. maxUnavailable: 1
  401. type: RollingUpdate
  402. selector:
  403. matchLabels:
  404. app: kube-ovn-monitor
  405. template:
  406. metadata:
  407. labels:
  408. app: kube-ovn-monitor
  409. component: network
  410. type: infra
  411. spec:
  412. tolerations:
  413. - operator: Exists
  414. affinity:
  415. podAntiAffinity:
  416. requiredDuringSchedulingIgnoredDuringExecution:
  417. - labelSelector:
  418. matchLabels:
  419. app: kube-ovn-monitor
  420. topologyKey: kubernetes.io/hostname
  421. priorityClassName: system-cluster-critical
  422. serviceAccountName: ovn
  423. hostNetwork: true
  424. containers:
  425. - name: kube-ovn-monitor
  426. image: {{ kube_ovn_container_image_repo }}:{{ kube_ovn_container_image_tag }}
  427. imagePullPolicy: {{ k8s_image_pull_policy }}
  428. command: ["/kube-ovn/start-ovn-monitor.sh"]
  429. securityContext:
  430. runAsUser: 0
  431. privileged: false
  432. env:
  433. - name: ENABLE_SSL
  434. value: "{{ kube_ovn_enable_ssl | lower }}"
  435. - name: KUBE_NODE_NAME
  436. valueFrom:
  437. fieldRef:
  438. fieldPath: spec.nodeName
  439. resources:
  440. requests:
  441. cpu: {{ kube_ovn_monitor_cpu_request }}
  442. memory: {{ kube_ovn_monitor_memory_request }}
  443. limits:
  444. cpu: {{ kube_ovn_monitor_cpu_limit }}
  445. memory: {{ kube_ovn_monitor_memory_limit }}
  446. volumeMounts:
  447. - mountPath: /var/run/openvswitch
  448. name: host-run-ovs
  449. - mountPath: /var/run/ovn
  450. name: host-run-ovn
  451. - mountPath: /etc/openvswitch
  452. name: host-config-openvswitch
  453. - mountPath: /etc/ovn
  454. name: host-config-ovn
  455. - mountPath: /var/log/openvswitch
  456. name: host-log-ovs
  457. - mountPath: /var/log/ovn
  458. name: host-log-ovn
  459. - mountPath: /etc/localtime
  460. name: localtime
  461. - mountPath: /var/run/tls
  462. name: kube-ovn-tls
  463. readinessProbe:
  464. exec:
  465. command:
  466. - cat
  467. - /var/run/ovn/ovnnb_db.pid
  468. periodSeconds: 10
  469. timeoutSeconds: 45
  470. livenessProbe:
  471. exec:
  472. command:
  473. - cat
  474. - /var/run/ovn/ovnnb_db.pid
  475. initialDelaySeconds: 30
  476. periodSeconds: 10
  477. failureThreshold: 5
  478. timeoutSeconds: 45
  479. nodeSelector:
  480. kubernetes.io/os: "linux"
  481. kube-ovn/role: "master"
  482. volumes:
  483. - name: host-run-ovs
  484. hostPath:
  485. path: /run/openvswitch
  486. - name: host-run-ovn
  487. hostPath:
  488. path: /run/ovn
  489. - name: host-config-openvswitch
  490. hostPath:
  491. path: /etc/origin/openvswitch
  492. - name: host-config-ovn
  493. hostPath:
  494. path: /etc/origin/ovn
  495. - name: host-log-ovs
  496. hostPath:
  497. path: /var/log/openvswitch
  498. - name: host-log-ovn
  499. hostPath:
  500. path: /var/log/ovn
  501. - name: localtime
  502. hostPath:
  503. path: /etc/localtime
  504. - name: kube-ovn-tls
  505. secret:
  506. optional: true
  507. secretName: kube-ovn-tls
  508. ---
  509. kind: Service
  510. apiVersion: v1
  511. metadata:
  512. name: kube-ovn-monitor
  513. namespace: kube-system
  514. labels:
  515. app: kube-ovn-monitor
  516. spec:
  517. ports:
  518. - name: metrics
  519. port: 10661
  520. type: ClusterIP
  521. {% if enable_dual_stack_networks %}
  522. ipFamilyPolicy: PreferDualStack
  523. {% endif %}
  524. selector:
  525. app: kube-ovn-monitor
  526. sessionAffinity: None
  527. ---
  528. kind: Service
  529. apiVersion: v1
  530. metadata:
  531. name: kube-ovn-pinger
  532. namespace: kube-system
  533. labels:
  534. app: kube-ovn-pinger
  535. spec:
  536. {% if enable_dual_stack_networks %}
  537. ipFamilyPolicy: PreferDualStack
  538. {% endif %}
  539. selector:
  540. app: kube-ovn-pinger
  541. ports:
  542. - port: 8080
  543. name: metrics
  544. ---
  545. kind: Service
  546. apiVersion: v1
  547. metadata:
  548. name: kube-ovn-controller
  549. namespace: kube-system
  550. labels:
  551. app: kube-ovn-controller
  552. spec:
  553. {% if enable_dual_stack_networks %}
  554. ipFamilyPolicy: PreferDualStack
  555. {% endif %}
  556. selector:
  557. app: kube-ovn-controller
  558. ports:
  559. - port: 10660
  560. name: metrics
  561. ---
  562. kind: Service
  563. apiVersion: v1
  564. metadata:
  565. name: kube-ovn-cni
  566. namespace: kube-system
  567. labels:
  568. app: kube-ovn-cni
  569. spec:
  570. {% if enable_dual_stack_networks %}
  571. ipFamilyPolicy: PreferDualStack
  572. {% endif %}
  573. selector:
  574. app: kube-ovn-cni
  575. ports:
  576. - port: 10665
  577. name: metrics