当前位置:   article > 正文

k8s kubeadm在安装 基于arm架构

k8s kubeadm在安装 基于arm架构

k8s kubeadm在安装 基于arm架构

第一章 k8s及中间件安装

1.主机名解析
  1. 10.129.148.4 hangkong-k8s-node01
  2. 10.129.148.5 hangkong-k8s-node02
  3. 10.129.148.6 hangkong-k8s-node03
  4. 10.129.148.4 hangkong-k8s.vip.com
2.主机名设置
  1. echo 'hangkong-k8s-node01' > /etc/hostname
  2. echo 'hangkong-k8s-node02' > /etc/hostname
  3. echo 'hangkong-k8s-node03' > /etc/hostname
  4. hostname hangkong-k8s-node01
  5. hostname hangkong-k8s-node02
  6. hostname hangkong-k8s-node03
3.禁用iptables和firewalld
  1. systemctl stop firewalld
  2. systemctl disable firewalld
  3. systemctl stop iptables
  4. systemctl disable iptables
4. 禁用selinux(linux下的一个安全服务,必须禁用)
  1. vim /etc/selinux/config
  2. SELINUX=disabled
  3. setenforce 0
5.禁用swap分区(主要是注释最后一行)
  1. vim /etc/fstab
  2. UUID=455cc753-7a60-4c17-a424-7741728c44a1 /boot xfs defaults 0 0
  3. /dev/mapper/centos-home /home xfs defaults 0 0
  4. # /dev/mapper/centos-swap swap swap defaults 0 0 //注释这条
6.修改系统的内核参数
  1. vim /etc/sysctl.conf
  2. 添加以下内容:
  3. net.bridge.bridge-nf-call-ip6tables = 1
  4. net.bridge.bridge-nf-call-iptables = 1
  5. 修改net.ipv4.ip_forward = 1
  6. 重新加载配置:
  7. sysctl -p
  8. 加载网桥过滤模块:
  9. modprobe br_netfilter
  10. 查看网桥过滤模块是否加载成功:
  11. lsmod | grep br_netfilter
7.配置ipvs功能
  1. dnf install ipvsadm
  2. 添加需要加载的模块写入脚本文件:
  3. cat <<EOF > /etc/sysconfig/modules/ipvs.modules
  4. #!/bin/bash
  5. modprobe -- ip_vs
  6. modprobe -- ip_vs_rr
  7. modprobe -- ip_vs_wrr
  8. modprobe -- ip_vs_sh
  9. modprobe -- nf_conntrack
  10. EOF
  11. 为脚本文件添加执行权限:
  12. chmod +x /etc/sysconfig/modules/ipvs.modules
  13. 执行脚本文件:
  14. /bin/bash /etc/sysconfig/modules/ipvs.modules
  15. 查看对应的模块是否加载成功:
  16. lsmod | grep -e ip_vs -e nf_conntrack
8.安装docker
  1. 下载安装包
  2. wget https://download.docker.com/linux/static/stable/aarch64/docker-20.10.19.tgz
  3. 安装
  4. tar -xzf docker-20.10.19.tgz
  5. 移动解压后的全部内容到/usr/bin/
  6. mv docker/* /usr/bin/
  7. 编辑docker.service文件
  8. vi /usr/lib/systemd/system/docker.service
  9. [Unit]
  10. Description=Docker Application Container Engine
  11. Documentation=https://docs.docker.com
  12. After=network-online.target firewalld.service
  13. Wants=network-online.target
  14. [Service]
  15. Type=notify
  16. ExecStart=/usr/bin/dockerd
  17. ExecReload=/bin/kill -s HUP $MAINPID
  18. LimitNOFILE=infinity
  19. LimitNPROC=infinity
  20. TimeoutStartSec=0
  21. Delegate=yes
  22. KillMode=process
  23. Restart=on-failure
  24. StartLimitBurst=3
  25. StartLimitInterval=60s
  26. [Install]
  27. WantedBy=multi-user.target
  28. 添加docker.service文件的权限
  29. chmod +x /usr/lib/systemd/system/docker.service
  30. systemctl daemon-reload
  31. 创建daemon.json文件
  32. mkdir /etc/docker
  33. vim daemon.json
  34. {
  35. "live-restore": true,
  36. "exec-opts": ["native.cgroupdriver=systemd"],
  37. "log-driver": "json-file",
  38. "graph":"/data/docker/graph",
  39. "registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"],
  40. "insecure-registries": ["192.168.8.73:18888","uat-harbor.bigfintax.com"],
  41. "log-opts": {
  42. "max-size": "100m"
  43. },
  44. "storage-driver": "overlay2",
  45. "storage-opts": [
  46. "overlay2.override_kernel_check=true"
  47. ]
  48. }
  49. reload内容、启动docker、设置开机启动
  50. systemctl daemon-reload
  51. systemctl start docker
  52. systemctl enable docker
  53. 验证docker安装是否成功
  54. docker -v &&. docker info
9.安装kubernetes1.23.9
  1. [root@hangkong-k8s-node02 kubernetes]# pwd
  2. /root/package/kubernetes
  3. [root@hangkong-k8s-node02 kubernetes]#
  4. [root@hangkong-k8s-node02 kubernetes]# ls -l
  5. total 68408
  6. -rw-r--r-- 1 root root 9014454 May 10 13:54 3f5ba2b53701ac9102ea7c7ab2ca6616a8cd5966591a77577585fde1c434ef74-cri-tools-1.26.0-0.x86_64.rpm
  7. -rw-r--r-- 1 root root 9921370 May 10 13:54 49658d033fddfa48e1345c21498197642b376412bfa4ba72ce36eb3f360f81d7-kubectl-1.23.9-0.x86_64.rpm
  8. -rw-r--r-- 1 root root 9476670 May 10 13:54 4f2cd27ecd6913e34408df70f465a104feb1fbe1f73c8d828ce5bd0ab9c37c3c-kubeadm-1.23.9-0.x86_64.rpm
  9. -rw-r--r-- 1 root root 208824 May 10 13:53 conntrack-tools-1.4.4-10.el8.x86_64.rpm
  10. -rw-r--r-- 1 root root 21510866 May 10 13:56 d3abccc1e93912e877085abf9e1daa3e2b3b2bb360df93eb6411510e81c9399c-kubelet-1.23.9-0.x86_64.rpm
  11. -rw-r--r-- 1 root root 19487362 May 10 13:57 db7cb5cb0b3f6875f54d10f02e625573988e3e91fd4fc5eef0b1876bb18604ad-kubernetes-cni-0.8.7-0.x86_64.rpm
  12. -rw-r--r-- 1 root root 24660 May 10 13:53 libnetfilter_cthelper-1.0.0-15.el8.x86_64.rpm
  13. -rw-r--r-- 1 root root 24700 May 10 13:53 libnetfilter_cttimeout-1.0.0-11.el8.x86_64.rpm
  14. -rw-r--r-- 1 root root 31976 May 10 13:53 libnetfilter_queue-1.0.4-3.el8.x86_64.rpm
  15. -rw-r--r-- 1 root root 330692 May 10 13:53 socat-1.7.4.1-1.el8.x86_64.rpm
  16. [root@hangkong-k8s-node02 kubernetes]#
  17. [root@hangkong-k8s-node02 kubernetes]# yum localinstall *^C
  18. [root@hangkong-k8s-node02 kubernetes]#
  19. [root@hangkong-k8s-node02 kubernetes]# rpm -qa|grep kube
  20. kubectl-1.23.9-0.x86_64
  21. kubelet-1.23.9-0.x86_64
  22. kubernetes-cni-0.8.7-0.x86_64
  23. kubeadm-1.23.9-0.x86_64
10. 集群初始化
  1. kubeadm init --control-plane-endpoint hangkong-k8s.vip.com:6443 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.96.0.0/16 --pod-network-cidr=10.244.0.0/16 --kubernetes-version=1.23.9 --upload-certs
  2. master可以调度
  3. kubectl taint node hangkong-k8s-node01 node-role.kubernetes.io/master-
11. 安装ingress

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

到这里,k8s已经安装完成了,下面是我们其他中间件的安装,请忽略。

11. 文件存储NAS
  1. dnf -y install
  2. nfs-utils-2.5.1-5.ky10.x86_64
  3. nfs-utils-help-2.5.1-5.ky10.x86_6
  4. 创建目录:mkdir /data/nfs/cge/
  5. mkdir /data/nfs/cbest/
  6. mkdir /data/nfs/package/
  7. vim /etc/exports
  8. /data/nfs/cge/ *(insecure,rw,sync,no_root_squash,no_subtree_check)
  9. /data/nfs/cbest/ *(insecure,rw,sync,no_root_squash,no_subtree_check)
  10. /data/nfs/package *(insecure,rw,sync,no_root_squash,no_subtree_check)
  11. 如果/etc/exports文件被修改,我们需要运行下面的命令使之生效。exportfs -ra
  12. 启动rpcbind服务
  13. sudo systemctl enable rpcbind
  14. sudo systemctl restart rpcbind
  15. 启动nfs服务
  16. sudo systemctl enable nfs-server
  17. sudo systemctl start nfs-server
12. mysql
  1. # 镜像地址改为
  2. - image: aaa.big.com/store-arm/mysql:5.7.43 #镜像tag修改
  3. # 给node节点添加标签
  4. kubectl label node zhongliang-k8s-node1 mysql=
  5. #创建挂载目录及授权
  6. mkdir /data/mysql
  7. chown -R 1001 /data/mysql/
  8. #修改 02-mysql-dep.yaml
  9. volumeMounts:
  10. - name: mysql-data
  11. mountPath: /bitnami/mysql/data #pod内的数据挂载到该目录
  12. - name: localtime # 新增
  13. mountPath: /etc/localtime # 新增 挂载本地时间到pod
  14. readOnly: true # 新增
  15. volumes:
  16. - hostPath:
  17. path: /data/mysql # 外挂持久化到本地
  18. type: "DirectoryOrCreate"
  19. name: mysql-data
  20. - name: localtime # 新增 挂载本地时间到pod内
  21. hostPath:
  22. path: /etc/localtime
  23. # 挂载到 /data/mysql后,mysql没有权限写入,可以先挂载到一个临时权限较高的目录,查看文件的属主,然后修改外面/data/mysql的属主, chown -R 1001 /data/mysql
  24. kubectl apply -f 01-mysql-svc.yaml
  25. kubectl apply -f 02-mysql-dep.yaml
13. nacos安装
  1. # 镜像地址改为
  2. - image: aaa.big.com/store-arm/nacos:1.4.2
  3. # 获取mysql的pod
  4. kubectl get pods -n store | grep mysql
  5. # 将sql导入mysql
  6. bash 05-nacos-mysql-import.sh mysql-64846d7d58-f47pg
  7. # 登陆mysql的pod查看数据是否导入成功
  8. kubectl exec -it MYSQLPOD -n store bash
  9. mysql -uroot -pMhxzKhl@123 -e "show databases;"
  10. # 给node节点添加标签
  11. kubectl label node zhongliang-k8s-node3 nacos=
  12. # 创建无头服务和nodeport
  13. kubectl apply -f 01-nacos-cluster.yml
  14. # 创建confimap 配置文件
  15. kubectl apply -f 02-nacos-configmap.yaml
  16. # 创建pod
  17. kubectl apply -f 03-nacos-deployment.yml
  18. # 修改ingress
  19. - host: "nacos.cofco.com" #修改域名
  20. # 创建ingress
  21. kubectl apply -f 04-nacos-ingress.yaml
  22. # 查看日志是否正常
  23. kubectl logs -f nacos-0 -n store
14. redis安装
  1. # 03-redis-master-sts.yaml 镜像地址改为
  2. - image: aaa.big.com/store-arm/redis:4.0.14
  3. # 07-create-redis-cluster.yaml 镜像地址改为
  4. - image: aaa.big.com/store-arm/redis:6.0
  5. # 给node节点添加标签
  6. kubectl label node zhongliang-k8s-node1 redis-cluster=
  7. kubectl label node zhongliang-k8s-node2 redis-cluster=
  8. kubectl label node zhongliang-k8s-node3 redis-cluster=
  9. # 部署完成后,登陆redis6的pod,通过redis6自带的cli,将另外启动的6个pod做成cluster集群 (下面地址需要替换成实际的ip地址)
  10. # 查看6个端口IP
  11. kubectl get pods -A -o wide | grep redis
  12. redis-cli --cluster create 192.168.210.108:6379 192.168.210.250:6379 192.168.210.170:6379 192.168.210.108:7379 192.168.210.250:7379 192.168.210.170:7379 --cluster-replicas 1
  13. # 登陆redis6的pod验证
  14. kubectl exec -it redis-6b4bbf7bd8-dv5zf -n store bash
  15. redis-cli -h 192.168.210.250 -c # 登陆redis cluster集群
  16. cluster info # 执行命令查看集群信息
  17. cluster nodes # 执行命令查看主从节点
  18. #验证没问题后删除这个单点的redis6
  19. kubectl delete -f 07-create-redis-cluster.yaml
15. rabbitmq安装
  1. # 03-ss.yaml 镜像地址改为
  2. - image: aaa.big.com/store-arm/rabbitmq:3.8
  3. # 给node节点添加标签
  4. kubectl label node zhongliang-k8s-node1 rabbitmq=
  5. kubectl label node zhongliang-k8s-node2 rabbitmq=
  6. kubectl label node zhongliang-k8s-node3 rabbitmq=
  7. # 创建rbac
  8. kubectl apply -f 00-rabc.yaml
  9. # 创建配置文件
  10. kubectl apply -f 01-cm.yaml
  11. # 创建svc
  12. kubectl apply -f 02-svc.yaml
  13. # 创建deployment
  14. kubectl apply -f 03-ss.yaml
  15. # 修改ingress
  16. - host: "rabbitmq.cofco.com" #修改域名
  17. # 创建ingress
  18. kubectl apply -f 04-ingress.yaml
  19. # 查看日志
  20. kubectl logs -f rabbitmq-0 -n store
  21. kubectl logs -f rabbitmq-1 -n store
16. rocketmq安装
  1. # 02-rocketmq-namesrv-prod.yaml 镜像地址改为
  2. - image: aaa.big.com/store-arm/rocketmq-namesrv:4.5.1_centos8
  3. # 04-rocketmq-broker-master-prod.yaml 镜像地址改为
  4. - image: aaa.big.com/store-arm/rocketmq-broker:4.5.1_centos8
  5. # 给node节点添加标签
  6. kubectl label node zhongliang-k8s-node1 node-role.kubernetes.io/rocketmq="true"
  7. kubectl label node zhongliang-k8s-node2 node-role.kubernetes.io/rocketmq-master: "true"
  8. # 创建namesrv的pod
  9. kubectl apply -f 02-rocketmq-namesrv-prod.yaml
  10. # 创建svc服务发现
  11. kubectl apply -f 03-rocketmq-broker-master-svc.yaml
  12. # 创建broker的pod
  13. kubectl apply -f 04-rocketmq-broker-master-prod.yaml
  14. # 创建console控制台
  15. kubectl apply -f 07-rocketmq-console-ng-prod-ingress.yaml
  16. # 修改ingress
  17. - host: "rocketmq.cofco.com" #修改域名
  18. #创建ingress
  19. kubectl apply -f 07-rocketmq-console-ng-prod-ingress.yaml
  20. # 当broker需要创建slave备份节点的时候才会执行
  21. 05-rocketmq-broker-slave-svc.yaml
  22. 06-rocketmq-broker-slave-prod.yaml
  23. # 验证
  24. kubectl logs -f rocketmq-broker-master-0 -n store
  25. kubectl logs -f namesrv-0 -n store
17. pgsql 控制台(pgadmin)页面安装
  1. # 02-pgadmin-dep.yaml 镜像地址改为
  2. - image: aaa.big.com/tool-arm/pgadmin4:8.6
  3. # 03-pgadmin-ingress.yaml 修改域名地址
  4. - host: "pgadmin.cofco.com" # 这里是示例,需要修改双引号内部分
  5. # 通过kubectl创建svc,pod,ingress
  6. kubectl apply ...
  7. # 验证 ,修改本地的host文件,
  8. 123.249.91.174 pgadmin.cofco.com # 123.249.91.174为公网地址,修改完成后浏览器访问pgadmin.cofco.com测试
18. mysql 控制台(phpmyadmin)页面安装
  1. # 02-phpmyadmin-dep.yaml 镜像地址改为
  2. - image: aaa.big.com/tool-arm/phpmyadmin:latest
  3. # 03-phpmyadmin-ingress.yaml 修改域名地址
  4. - host: "phpadmin.cofco.com" # 这里是示例,需要修改双引号内部分
  5. # 通过kubectl创建svc,pod,ingress
  6. kubectl apply ...
  7. # 验证 ,修改本地的host文件,
  8. 123.249.91.174 phpadmin.cofco.com # 123.249.91.174为公网地址,修改完成后浏览器访问 phpadmin.cofco.com 测试
19. redis 控制台(redis-sinsight)页面安装
  1. # 01-redis-sinsight-dep.yaml 镜像地址改为
  2. - image: aaa.big.com/tool-arm/redisinsight:1.13.1
  3. # 03-redis-sinsight-ingress.yaml 修改域名地址
  4. - host: "redisinsight.cofco.com" # 这里是示例,需要修改双引号内部分
  5. # 通过kubectl创建svc,pod,ingress
  6. kubectl apply ...
  7. # 验证 ,修改本地的host文件,
  8. 123.249.91.174 redisinsight.cofco.com # 123.249.91.174为公网地址,修改完成后浏览器访问redisinsight.cofco.com测试

第二章:离线软件包下载

使用repotrack下载指定rpm包及其全量依赖

先添加kubernetes.repo

  1. vim /etc/yum.repos.d/kubernetes.repo
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-aarch64
  5. enabled=1
  6. gpgcheck=0
  7. repo_gpgcheck=0
  8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  9. kylin sp1验证
  10. dnf -y install kubeadm-1.23.9-0 kubernetes-cni-0.8.7 kubelet-1.23.9-0 kubectl-1.23.9-0 kubernetes-cni-0.8.7-0 --downloadonly --destdir=/root/package/kubernetes/
  11. 安装软件包
  12. cd /root/package/kubernetes/
  13. yum localinstall *.rpm -y

第三章:本地仓库配置YUM

  1. 创建一个新的目录来存储你的RPM包:
  2. mkdir /path/to/myrepo
  3. 将你的RPM包复制到这个目录中。
  4. 安装createrepo工具,如果尚未安装
  5. yum install createrepo
  6. 运行createrepo来创建仓库元数据:
  7. createrepo /path/to/myrepo/
  8. 创建一个新的repo文件,在/etc/yum.repos.d/目录下:
  9. vi /etc/yum.repos.d/myrepo.repo
  10. 在myrepo.repo文件中添加以下内容
  11. [myrepo]
  12. name=My Local Repository
  13. baseurl=file:///path/to/myrepo/
  14. enabled=1
  15. gpgcheck=0
  16. yum命令来安装、更新或者搜索仓库中的包
  17. yum install package-name
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/727969
推荐阅读
相关标签
  

闽ICP备14008679号