日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kubernetes集群部署

發布時間:2024/9/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes集群部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Kubernetes簡介

在Docker 作為高級容器引擎快速發展的同時,在Google內部,容器技術已經應用了很多年,Borg系統運行管理著成千上萬的容器應用。

Kubernetes項目來源于Borg,可以說是集結了Borg設計思想的精華,并且吸收了Borg系統中的經驗和教訓。

Kubernetes對計算資源進行了更高層次的抽象,通過將容器進行細致的組合,將最終的應用服務交給用戶。

Kubernetes的好處:

  • 隱藏資源管理和錯誤處理,用戶僅需要關注應用的開發。

  • 服務高可用、高可靠。

  • 可將負載運行在由成千上萬的機器聯合而成的集群中。

1.kubernetes設計架構

Kubernetes集群包含有節點代理kubelet和Master組件(APIs, scheduler, etc),一切都基于分布式的存儲系統。

Kubernetes主要由以下幾個核心組件組成:

  • etcd:保存了整個集群的狀態
  • apiserver:提供了資源操作的唯一入口,并提供認證、授權、訪問控制、API注冊和發現等機制
  • controller manager:負責維護集群的狀態,比如故障檢測、自動擴展、滾動更新等
  • scheduler:負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上
  • kubelet:負責維護容器的生命周期,同時也負責Volume(CVI)和網絡(CNI)的管理
  • Container runtime:負責鏡像管理以及Pod和容器的真正運行(CRI)
  • kube-proxy:負責為Service提供cluster內部的服務發現和負載均衡

除了核心組件,還有一些推薦的Add-ons:

  • kube-dns:負責為整個集群提供DNS服務
  • Ingress Controller:為服務提供外網入口
  • Heapster:提供資源監控
  • Dashboard:提供GUI
  • Federation:提供跨可用區的集群
  • Fluentd-elasticsearch:提供集群日志采集、存儲與查詢

Kubernetes設計理念和功能其實就是一個類似Linux的分層架構

核心層:Kubernetes最核心的功能,對外提供API構建高層的應用,對內提供插件式應用執行環境

應用層:部署(無狀態應用、有狀態應用、批處理任務、集群應用等)和路由(服務發現、DNS解析等)

管理層:系統度量(如基礎設施、容器和網絡的度量),自動化(如自動擴展、動態Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)

接口層:kubectl命令行工具、客戶端SDK以及集群聯邦

生態系統:在接口層之上的龐大容器集群管理調度的生態系統,可以劃分為兩個范疇

  • Kubernetes外部:日志、監控、配置管理、CI、CD、Workflow、FaaS、OTS應用、ChatOps等
  • Kubernetes內部:CRI、CNI、CVI、鏡像倉庫、Cloud Provider、集群自身的配置和管理等

二、Kubernetes部署

參考官網

  • 關閉節點的selinux和iptables防火墻

  • 所有節點部署docker引擎

  • 所有節點都一樣server2 server3 server4

修改驅動

[root@server2 docker]# vim daemon.json {"registry-mirrors": ["https://reg.westos.org"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2","storage-opts": ["overlay2.override_kernel_check=true"] } [root@server2 docker]# systemctl daemon-reload [root@server2 docker]# systemctl restart docker.service docker info 查看驅動是否變成了systemd形式的


注意: 如果修改完之后重啟失敗,按照以下操作完成再次重啟即可

[root@server3 ~]# cd /etc/systemd/system/docker.service.d [root@server3 docker.service.d]# ls 10-machine.conf [root@server3 docker.service.d]# rm -fr 10-machine.conf

禁用swap分區

每個節點都需要做

#swapoff -a 注釋掉/etc/fstab文件中的swap定義 防止開機自啟

安裝部署軟件kubeadm

[root@server2 ~]# cd /etc/yum.repos.d/ [root@server2 yum.repos.d]# vim k8s.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0

此前如果配置了Centos的源,請先將它禁用,以免下載服務時有依賴性的影響。
每個節點操作一樣

[root@server2 ~]# yum install kubelet kubeadm kubectl [root@server2 ~]# systemctl enable --now kubelet [root@server2 yum.repos.d]# scp k8s.repo server3:/etc/yum.repos.d/ [root@server2 yum.repos.d]# scp k8s.repo server4:/etc/yum.repos.d/ [root@server2 ~]# kubeadm config print init-defaults ## //查看默認配置信息



默認從k8s.gcr.io上下載組件鏡像,需要翻墻才可以,所以需要修改鏡像倉庫:
只有管理端需要拉取鏡像

[root@server2 ~]# kubeadm config images list --image-repository registry.aliyuncs.com/google_containers ## 列出所需鏡像 [root@server2 ~]# kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers ## 拉取鏡像


初始化集群

[root@server2 ~]# kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository registry.aliyuncs.com/google_containers--pod-network-cidr=10.244.0.0/16 //使用flannel網絡組件時必須添加 --kubernetes-version //指定k8s安裝版本

安裝flannel網絡組件

https://github.com/coreos/flannel
鏈接: kube-flannel.yml 提取碼: s452

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml kubectl apply -f kube-flannel.yml

如果下載失敗,在網盤自行提取

[root@server2 ~]# kubectl get pod --namespace kube-system


加入網絡插件之后,狀態就會變成ready

[root@server2 etc]# kubectl get nodes

為了方便,我們直接將需要的鏡像打包,發送給集群其他節點,讓其本地拉取就行

[root@server2 ~]# docker save quay.io/coreos/flannel:v0.12.0-amd64 registry.aliyuncs.com/google_containers/pause:3.2 registry.aliyuncs.com/google_containers/coredns:1.7.0 registry.aliyuncs.com/google_containers/kube-proxy:v1.20.2 > node.tar [root@server2 ~]# scp node.tar server3:~/ [root@server2 ~]# scp node.tar server4:~/ [root@server3 ~]# docker load -i node.tar [root@server4 ~]# docker load -i node.tar

在server3 server4執行,初始化之后生成的。按照實際添加。

kubeadm join 172.25.1.2:6443 --token 3jc2ts.iby7sspiql1atfj2 \--discovery-token-ca-cert-hash sha256:e5d5e3660a96182995168d4d35199c7cc451601453fe074957de6bf023e1cecc

最后在master端查看節點狀態

[root@server2 ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION server2 Ready control-plane,master 27m v1.20.2 server3 Ready <none> 26m v1.20.2 server4 Ready <none> 26m v1.20.2



如果查詢狀態,以及pod 等都顯示正常,到這里集群部署就結束了。

總結

以上是生活随笔為你收集整理的Kubernetes集群部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。