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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Kubernetes集群部署

發(fā)布時(shí)間:2024/9/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Kubernetes集群部署 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Kubernetes簡(jiǎn)介

在Docker 作為高級(jí)容器引擎快速發(fā)展的同時(shí),在Google內(nèi)部,容器技術(shù)已經(jīng)應(yīng)用了很多年,Borg系統(tǒng)運(yùn)行管理著成千上萬的容器應(yīng)用。

Kubernetes項(xiàng)目來源于Borg,可以說是集結(jié)了Borg設(shè)計(jì)思想的精華,并且吸收了Borg系統(tǒng)中的經(jīng)驗(yàn)和教訓(xùn)。

Kubernetes對(duì)計(jì)算資源進(jìn)行了更高層次的抽象,通過將容器進(jìn)行細(xì)致的組合,將最終的應(yīng)用服務(wù)交給用戶。

Kubernetes的好處:

  • 隱藏資源管理和錯(cuò)誤處理,用戶僅需要關(guān)注應(yīng)用的開發(fā)。

  • 服務(wù)高可用、高可靠。

  • 可將負(fù)載運(yùn)行在由成千上萬的機(jī)器聯(lián)合而成的集群中。

1.kubernetes設(shè)計(jì)架構(gòu)

Kubernetes集群包含有節(jié)點(diǎn)代理kubelet和Master組件(APIs, scheduler, etc),一切都基于分布式的存儲(chǔ)系統(tǒng)。

Kubernetes主要由以下幾個(gè)核心組件組成:

  • etcd:保存了整個(gè)集群的狀態(tài)
  • apiserver:提供了資源操作的唯一入口,并提供認(rèn)證、授權(quán)、訪問控制、API注冊(cè)和發(fā)現(xiàn)等機(jī)制
  • controller manager:負(fù)責(zé)維護(hù)集群的狀態(tài),比如故障檢測(cè)、自動(dòng)擴(kuò)展、滾動(dòng)更新等
  • scheduler:負(fù)責(zé)資源的調(diào)度,按照預(yù)定的調(diào)度策略將Pod調(diào)度到相應(yīng)的機(jī)器上
  • kubelet:負(fù)責(zé)維護(hù)容器的生命周期,同時(shí)也負(fù)責(zé)Volume(CVI)和網(wǎng)絡(luò)(CNI)的管理
  • Container runtime:負(fù)責(zé)鏡像管理以及Pod和容器的真正運(yùn)行(CRI)
  • kube-proxy:負(fù)責(zé)為Service提供cluster內(nèi)部的服務(wù)發(fā)現(xiàn)和負(fù)載均衡

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

  • kube-dns:負(fù)責(zé)為整個(gè)集群提供DNS服務(wù)
  • Ingress Controller:為服務(wù)提供外網(wǎng)入口
  • Heapster:提供資源監(jiān)控
  • Dashboard:提供GUI
  • Federation:提供跨可用區(qū)的集群
  • Fluentd-elasticsearch:提供集群日志采集、存儲(chǔ)與查詢

Kubernetes設(shè)計(jì)理念和功能其實(shí)就是一個(gè)類似Linux的分層架構(gòu)

核心層:Kubernetes最核心的功能,對(duì)外提供API構(gòu)建高層的應(yīng)用,對(duì)內(nèi)提供插件式應(yīng)用執(zhí)行環(huán)境

應(yīng)用層:部署(無狀態(tài)應(yīng)用、有狀態(tài)應(yīng)用、批處理任務(wù)、集群應(yīng)用等)和路由(服務(wù)發(fā)現(xiàn)、DNS解析等)

管理層:系統(tǒng)度量(如基礎(chǔ)設(shè)施、容器和網(wǎng)絡(luò)的度量),自動(dòng)化(如自動(dòng)擴(kuò)展、動(dòng)態(tài)Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)

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

生態(tài)系統(tǒng):在接口層之上的龐大容器集群管理調(diào)度的生態(tài)系統(tǒng),可以劃分為兩個(gè)范疇

  • Kubernetes外部:日志、監(jiān)控、配置管理、CI、CD、Workflow、FaaS、OTS應(yīng)用、ChatOps等
  • Kubernetes內(nèi)部:CRI、CNI、CVI、鏡像倉庫、Cloud Provider、集群自身的配置和管理等

二、Kubernetes部署

參考官網(wǎng)

  • 關(guān)閉節(jié)點(diǎn)的selinux和iptables防火墻

  • 所有節(jié)點(diǎn)部署docker引擎

  • 所有節(jié)點(diǎn)都一樣server2 server3 server4

修改驅(qū)動(dòng)

[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 查看驅(qū)動(dòng)是否變成了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分區(qū)

每個(gè)節(jié)點(diǎn)都需要做

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

安裝部署軟件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的源,請(qǐng)先將它禁用,以免下載服務(wù)時(shí)有依賴性的影響。
每個(gè)節(jié)點(diǎn)操作一樣

[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 ## //查看默認(rèn)配置信息



默認(rèn)從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網(wǎng)絡(luò)組件時(shí)必須添加 --kubernetes-version //指定k8s安裝版本

安裝flannel網(wǎng)絡(luò)組件

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

如果下載失敗,在網(wǎng)盤自行提取

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


加入網(wǎng)絡(luò)插件之后,狀態(tài)就會(huì)變成ready

[root@server2 etc]# kubectl get nodes

為了方便,我們直接將需要的鏡像打包,發(fā)送給集群其他節(jié)點(diǎn),讓其本地拉取就行

[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執(zhí)行,初始化之后生成的。按照實(shí)際添加。

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

最后在master端查看節(jié)點(diǎn)狀態(tài)

[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



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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。