在阿里云服務(wù)器怎么安裝部署docker+Kubernetes(K8s)

閱讀:410 2024-07-14 23:44:02

前言

Docker全面介紹

Docker 是一個(gè)商業(yè)容器化平臺(tái)和運(yùn)行時(shí),可幫助開發(fā)人員構(gòu)建、部署和運(yùn)行容器。它使用客戶端-服務(wù)器架構(gòu),通過單個(gè) API 提供簡(jiǎn)單的命令和自動(dòng)化。
使用 Docker,開發(fā)人員可以通過編寫 Dockerfile 來創(chuàng)建容器化應(yīng)用程序,這本質(zhì)上是構(gòu)建容器映像的秘訣。然后,Docker 提供了一組工具來構(gòu)建和管理這些容器映像,使開發(fā)人員能夠更輕松地以一致且可重復(fù)的方式打包和部署應(yīng)用程序。
這些容器映像可以在任何支持容器的平臺(tái)上運(yùn)行,例如 Kubernetes、Docker Swarm、Mesos 或 HashiCorp Nomad。Docker的平臺(tái)使開發(fā)人員可以更輕松地創(chuàng)建和管理這些容器鏡像,從而簡(jiǎn)化了跨不同環(huán)境構(gòu)建和部署應(yīng)用程序的過程。

Kubernetes(K8s) 全面介紹

Kubernetes,也稱為 K8s,是一個(gè)著名的開源平臺(tái),旨在跨網(wǎng)絡(luò)資源集群編排容器運(yùn)行時(shí)系統(tǒng)。它可以獨(dú)立運(yùn)行,也可以與其他容器化工具(例如 Docker)結(jié)合使用。

Kubernetes 提供了一種實(shí)用的解決方案,用于在一臺(tái)機(jī)器上管理一組容器,以減少網(wǎng)絡(luò)開銷并優(yōu)化資源利用率。例如,一個(gè)容器集可以由應(yīng)用服務(wù)器、Redis 緩存和 SQL 數(shù)據(jù)庫組成。相比之下,Docker 容器被設(shè)計(jì)為每個(gè)容器運(yùn)行一個(gè)進(jìn)程。

隨著容器的激增,組織最終可能會(huì)擁有數(shù)百甚至數(shù)千個(gè)容器,這使得運(yùn)營團(tuán)隊(duì)必須自動(dòng)化容器部署、網(wǎng)絡(luò)、可擴(kuò)展性和可用性。這導(dǎo)致了容器編排市場(chǎng)的出現(xiàn)。

開發(fā)人員選擇 Kubernetes 是因?yàn)樗哂袕V泛的功能、龐大且不斷增長(zhǎng)的開源支持工具生態(tài)系統(tǒng),以及它支持各種云服務(wù)提供商和工作的能力。所有主要公共云提供商,包括 Amazon Web Services (AWS)、Google Cloud、IBM Cloud 和 Microsoft Azure,都提供完全托管的 Kubernetes 服務(wù),這凸顯了其在全行業(yè)的受歡迎程度。

Docker 和 Kubernetes 之間的區(qū)別

Docker 和 Kubernetes 都是容器化生態(tài)系統(tǒng)中的關(guān)鍵組件,具有不同的用途。Docker 主要用于創(chuàng)建和執(zhí)行容器,而 Kubernetes 用于編排和自動(dòng)化跨主機(jī)集群的容器部署、擴(kuò)展和管理。
Docker 提供了一種簡(jiǎn)單有效的容器化方法,而 Kubernetes 提供了自動(dòng)擴(kuò)展、自我修復(fù)和容器部署等高級(jí)功能。

安裝部署docker+Kubernetes(K8s)過程

1.查閱K8S+docker的版本號(hào)對(duì)應(yīng)關(guān)系

1.1.打開github;搜索kubernetes項(xiàng)目(github地址:https://github.com/)

1.2.打開項(xiàng)目中CHANGELOG文件夾,其中就有CHANGELOG-XXX.md版本號(hào)文件,如下截圖所示:

 

20210618214906218.png

 

1.3.打開kubernetes版本號(hào)文件,ctrl+f搜索"docker version",便可以查詢到所有可用版本號(hào)如下截圖所示:

 

20210618214942782.png

 

2.將所需的安裝包下載到本地(進(jìn)行本地化安裝)

3.機(jī)器的準(zhǔn)備(其中包括機(jī)器版本及配置)

3.1.查看linux機(jī)器版本號(hào)命令:cat /proc/version

我的版本號(hào):Linux version 3.10.0-1062.18.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Tue Mar 17 23:49:17 UTC 2020

3.2.機(jī)器的配置

cpu:4C 內(nèi)存:4G 硬盤:32G

查看cpu(邏輯):cat /proc/cpuinfo | grep ‘processor’ | wc -l

查看cpu(物理):cat /proc/cpuinfo | grep ‘physical id’ | sort | uniq | wc -l

查看內(nèi)存總數(shù):cat /proc/meminfo | grep MemTotal

查看硬盤大?。篸f -h

4.環(huán)境的準(zhǔn)備

4.1. 設(shè)置主機(jī)名與時(shí)區(qū)

timedatectl set-timezone Asia/Shanghai #都要執(zhí)行

hostnamectl set-hostname master #194執(zhí)行

hostnamectl set-hostname node1 #195執(zhí)行

hostnamectl set-hostname node2 #196執(zhí)行

 

4.2. 添加hosts網(wǎng)絡(luò)主機(jī)配置,三臺(tái)虛擬機(jī)都要設(shè)置

vim /etc/hosts

192.168.10.194 master

192.168.10.195 node1

192.168.10.196 node2

 

4.3. 關(guān)閉防火墻,三臺(tái)虛擬機(jī)都要設(shè)置,生產(chǎn)環(huán)境跳過這一步

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

setenforce 0

systemctl disable firewalld

systemctl stop firewalld

5.K8S的安裝及加載K8S鏡像

5.1. 將鏡像包上傳至服務(wù)器每個(gè)節(jié)點(diǎn)

mkdir /usr/local/k8s-install

cd /usr/local/k8s-install

XFTP上傳安裝文件

 

5.2. 按每個(gè)Centos上安裝Docker

tar -zxvf docker-ce-18.09.tar.gz

cd docker

yum localinstall -y *.rpm

 

systemctl start docker

systemctl enable docker

 

5.3. 確保從cgroups均在同一個(gè)從groupfs

#cgroups是control groups的簡(jiǎn)稱,它為L(zhǎng)inux內(nèi)核提供了一種任務(wù)聚集和劃分的機(jī)制,通過一組參數(shù)集合將一些任務(wù)組織成一個(gè)或多個(gè)子系統(tǒng)。

#cgroups是實(shí)現(xiàn)IaaS虛擬化(kvm、lxc等),PaaS容器沙箱(Docker等)的資源管理控制部分的底層基礎(chǔ)。

#子系統(tǒng)是根據(jù)cgroup對(duì)任務(wù)的劃分功能將任務(wù)按照一種指定的屬性劃分成的一個(gè)組,主要用來實(shí)現(xiàn)資源的控制。

#在cgroup中,劃分成的任務(wù)組以層次結(jié)構(gòu)的形式組織,多個(gè)子系統(tǒng)形成一個(gè)數(shù)據(jù)結(jié)構(gòu)中類似多根樹的結(jié)構(gòu)。cgroup包含了多個(gè)孤立的子系統(tǒng),每一個(gè)子系統(tǒng)代表單一的資源

 

docker info | grep cgroup

 

如果不是groupfs,執(zhí)行下列語句

 

cat < /etc/docker/daemon.json{“exec-opts”: [“native.cgroupdriver=cgroupfs”]}EOFsystemctl daemon-reload && systemctl restart docker

 

5.4. 安裝kubeadm

kubeadm是集群部署工具

 

cd /usr/local/k8s-install/kubernetes-1.14tar -zxvf kube114-rpm.tar.gzcd kube114-rpmyum localinstall -y *.rpm

 

5.5. 關(guān)閉交換區(qū)

 

swapoff -avi /etc/fstab#swap一行注釋

 

5.6. 配置網(wǎng)橋

 

cat < /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOFsysctl --system

 

5.7. 通過鏡像安裝k8s

 

cd /usr/local/k8s-install/kubernetes-1.14docker load -i k8s-114-images.tar.gzdocker load -i flannel-dashboard.tar.gz

 

6.安裝kubeadm并創(chuàng)建K8S集群

6.1. master主服務(wù)器配置

 

kubeadm init --kubernetes-version=v1.14.1 --pod-network-cidr=10.244.0.0/16mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown ( i d − u ) : (id -u):(id−u):(id -g) $HOME/.kube/configkubectl get nodes#查看存在問題的podkubectl get pod --all-namespaces#設(shè)置全局變量#安裝flannel網(wǎng)絡(luò)組件kubectl create -f kube-flannel.yml

 

6.2. 加入NODE節(jié)點(diǎn)

 

kubeadm join 192.168.10.194:6443 --token 0b15nw.w9xq58pcttqq647k–discovery-token-ca-cert-hash sha256:23db3094dc9ae1335b25692717c40e24b1041975f6a43da9f43568f8d0dbac72

 

如果忘記

在master 上執(zhí)行kubeadm token list 查看 ,在node上運(yùn)行(如下ip、端口、token都是master對(duì)應(yīng)的值,切記)

 

kubeadm join 192.168.10.194:6443 --token 0b15nw.w9xq58pcttqq647k --discovery-token-unsafe-skip-ca-verificationkubectl get nodes

 

6.3. Master開啟儀表盤

 

kubectl apply -f kubernetes-dashboard.yamlkubectl apply -f admin-role.yamlkubectl apply -f kubernetes-dashboard-admin.rbac.yamlkubectl -n kube-system get svchttp://192.168.10.194:32000 訪問

 

7.遇到的坑

7.1.最開始在自己本地的虛擬機(jī)進(jìn)行安裝的由于分配的cpu為1,結(jié)果執(zhí)行6.1步驟的時(shí)候報(bào)錯(cuò)了,錯(cuò)誤提示很明確最少需要2cpu

7.2.后來在以上機(jī)器配置中進(jìn)行5.2中安裝docker遇到如下版本號(hào)沖突問題,于是百度下載對(duì)應(yīng)版本號(hào)的包替換即可(讓版本號(hào)一致)

 

錯(cuò)誤:軟件包:policycoreutils-python-2.5-29.el7_6.1.x86_64 (/policycoreutils-python-2.5-29.el7_6.1.x86_64)

需要:policycoreutils = 2.5-29.el7_6.1

已安裝: policycoreutils-2.5-33.el7.x86_64 (@anaconda)

policycoreutils = 2.5-33.el7

可用: policycoreutils-2.5-34.el7.x86_64 (base)

policycoreutils = 2.5-34.el7

錯(cuò)誤:軟件包:audit-libs-python-2.8.4-4.el7.x86_64 (/audit-libs-python-2.8.4-4.el7.x86_64)

需要:audit-libs(x86-64) = 2.8.4-4.el7

已安裝: audit-libs-2.8.5-4.el7.x86_64 (@anaconda)

audit-libs(x86-64) = 2.8.5-4.el7

 

7.3.執(zhí)行6.3加入node節(jié)點(diǎn)的時(shí)候,在node機(jī)器輸入的命令一直是node機(jī)器的ip結(jié)果總是報(bào)錯(cuò);后來才恍然大悟,需要用master機(jī)器的ip

 

7.4.執(zhí)行6.3加入node節(jié)點(diǎn)的時(shí)候,token過期,導(dǎo)致無法加入

如果遇到如下問題,可能是token過期了,需要執(zhí)行 kubeadm token create重新獲取token

 

[preflight] Running pre-flight checks[preflight] Reading configuration from the cluster…[preflight] FYI: You can look at this config file with ‘kubectl -n kube-system get cm kubeadm-config -oyaml’error execution phase preflight: unable to fetch the kubeadm-config ConfigMap: failed to get config map: Unauthorized

 

 
相關(guān)文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感興趣
推薦閱讀 更多>
推薦商標(biāo)

{{ v.name }}

{{ v.cls }}類

立即購買 聯(lián)系客服
主站蜘蛛池模板: 精品人无码一区二区三区| 岛国av无码免费无禁网站| 久久久91人妻无码精品蜜桃HD| 亚洲另类无码专区首页| 国产亚洲精品无码拍拍拍色欲| 中文字幕乱偷无码AV先锋| 亚洲最大av资源站无码av网址| 国产av无码久久精品| 精品日韩亚洲AV无码一区二区三区| 亚洲日韩VA无码中文字幕| 国产精品久久久久无码av| 一区二区三区无码视频免费福利| 亚洲精品无码专区| 亚洲av无码乱码国产精品| 日日摸日日碰人妻无码| 亚洲乱亚洲乱妇无码| 色噜噜综合亚洲av中文无码| 寂寞少妇做spa按摩无码| WWW久久无码天堂MV| 亚洲熟妇av午夜无码不卡| 日韩AV无码精品人妻系列| 中文字幕AV中文字无码亚| 亚洲精品无码av天堂| 亚洲AV蜜桃永久无码精品| 免费无码AV片在线观看软件| 亚洲AV无码XXX麻豆艾秋| 免费无码H肉动漫在线观看麻豆| 亚洲av永久无码| 亚洲av无码有乱码在线观看| 久久久久亚洲av无码专区导航| 国产精品ⅴ无码大片在线看| 亚洲最大av无码网址| 国模无码人体一区二区| 国产午夜无码片免费| 国产精品99精品无码视亚| 无码人妻一区二区三区在线| 无码精品人妻一区二区三区免费看 | 精品久久久无码中字| 无码一区二区三区免费视频| 色欲aⅴ亚洲情无码AV| 无码少妇一区二区三区芒果|