溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

kubernetes創(chuàng)建資源的兩種方式

發(fā)布時間:2020-06-10 15:43:50 來源:億速云 閱讀:231 作者:元一 欄目:云計算

Kubernetes概述

Kubernetes是Google開源的一個容器編排引擎,它支持自動化部署、大規(guī)??缮炜s、應(yīng)用容器化管理。在生產(chǎn)環(huán)境中部署一個應(yīng)用程序時,通常要部署該應(yīng)用的多個實例以便對應(yīng)用請求進(jìn)行負(fù)載均衡。

在Kubernetes中,我們可以創(chuàng)建多個容器,每個容器里面運行一個應(yīng)用實例,然后通過內(nèi)置的負(fù)載均衡策略,實現(xiàn)對這一組應(yīng)用實例的管理、發(fā)現(xiàn)、訪問,而這些細(xì)節(jié)都不需要運維人員去進(jìn)行復(fù)雜的手工配置和處理

K8S 的資源有 Pod、Service、Volume、Namespace、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job等等

基于配置文件的方式:

  1. 配置文件描述了 What,即應(yīng)用最終要達(dá)到的狀態(tài)。
  2. 配置文件提供了創(chuàng)建資源的模板,能夠重復(fù)部署。
  3. 可以像管理代碼一樣管理部署。
  4. 適合正式的、跨環(huán)境的、規(guī)?;渴?。
  5. 這種方式要求熟悉配置文件的語法,有一定難度。

一,用命令行的方式創(chuàng)建資源

主機IP地址
master192.168.1.21
node01192.168.1.22
node02192.168.1.23

僅接受json格式

配置清單(yml、yaml)

[root@master ~]# cd /etc/kubernetes/manifests/
//k8s的yml、yaml文件

1.node01和node02下載nginx鏡像

docker pull nginx
//下載nginx鏡像

2.master創(chuàng)建Pod控制器(test-web),deployment

[root@master ~]# kubectl run test-web --image=nginx --replicas=5
//創(chuàng)建Pod控制器,deployment

3.查看控制器情況

(1)

[root@master ~]# kubectl get deployments.
//查看控制器情況

kubernetes創(chuàng)建資源的兩種方式

[root@master ~]# kubectl get pod --all-namespaces -o wide
//顯示pod的節(jié)點信息

kubernetes創(chuàng)建資源的兩種方式

(2)

[root@master ~]# kubectl get namespaces 
//查看k8s名稱空間

kubernetes創(chuàng)建資源的兩種方式

[root@master ~]# kubectl describe deployments. test-web
//查看資源詳細(xì)信息

kubernetes創(chuàng)建資源的兩種方式

查看某種資源對象,沒有指定名稱空間,默認(rèn)是在default名稱空間??梢约由?n選項,查看指定名稱空間的資源。

[root@master ~]# kubectl get pod -n kube-system 

kubernetes創(chuàng)建資源的兩種方式

3.刪除test-web控制器

[root@master ~]# kubectl delete deployments. test-web 

4.master創(chuàng)建Pod控制器(web),deployment

[root@master ~]# kubectl run web --image=nginx --replicas=5

查看一下pod信息

[root@master ~]# kubectl get pod -o wide
//查看一下pod的節(jié)點信息

kubernetes創(chuàng)建資源的兩種方式

[root@master ~]# kubectl describe deployments. web 
//查看資源詳細(xì)信息

kubernetes創(chuàng)建資源的兩種方式

注意:直接運行創(chuàng)建的deployment資源對象,是經(jīng)常使用的一個控制器資源類型,除了deployment,還有rc、rs等等pod控制器,deployment是一個高級的pod控制器。

本機測試訪問nginx

[root@master ~]# curl 10.244.1.7

kubernetes創(chuàng)建資源的兩種方式

5.創(chuàng)建service資源類型

[root@master ~]# kubectl expose deployment web --name=web-xgp --port=80 --type=NodePort
//創(chuàng)建service資源類型,這里我們設(shè)置了映射端口

如果想要外網(wǎng)能夠訪問服務(wù),可以暴露deployment資源,得到service資源,但svc資源的類型必須為NodePort。

映射端口范圍:30000-32767

查看service信息

[root@master ~]# kubectl get svc

kubernetes創(chuàng)建資源的兩種方式

瀏覽器測試訪問http://192.168.1.21:30493/

kubernetes創(chuàng)建資源的兩種方式

二、服務(wù)的擴(kuò)容與縮容

1. 查看控制器信息

[root@master ~]# kubectl get deployments. -o wide

kubernetes創(chuàng)建資源的兩種方式

2.擴(kuò)容

[root@master ~]# kubectl scale deployment web --replicas=8

查看一下

[root@master ~]# kubectl get deployments. -o wide

kubernetes創(chuàng)建資源的兩種方式

3.縮容

[root@master ~]# kubectl scale deployment web --replicas=4

查看一下

[root@master ~]# kubectl get deployments. -o wide

kubernetes創(chuàng)建資源的兩種方式

3.通過修改web的yaml文件進(jìn)行擴(kuò)容縮容

備份web的yaml文件

[root@master ~]# kubectl get deployments. -o yaml > web.yaml

使用edit修改web的yaml文件

[root@master ~]# kubectl edit deployments. web 

kubernetes創(chuàng)建資源的兩種方式

查看一下

[root@master ~]# kubectl get deployments. -o wide

kubernetes創(chuàng)建資源的兩種方式

三、服務(wù)的升級與回滾

node01和node02下載1.15版本的nginx

[root@master ~]# docker pull nginx:1.15

1.master設(shè)置服務(wù)升級

[root@master ~]#  kubectl set image deployment web web=nginx:1.15

查看一下

kubernetes創(chuàng)建資源的兩種方式

2.master設(shè)置服務(wù)回滾

(1)修改配置文件回滾

使用edit修改web的yaml文件

[root@master ~]# kubectl edit deployments. web 

kubernetes創(chuàng)建資源的兩種方式

查看一下

[root@master ~]# kubectl get deployments. -o wide

kubernetes創(chuàng)建資源的兩種方式

(2)命令回滾

[root@master ~]# kubectl rollout undo deployment web 

kubernetes創(chuàng)建資源的兩種方式

注意:只能回滾到上一次操作的狀態(tài)

四、小實驗

實驗環(huán)境

主機IP地址服務(wù)
master192.168.1.21registry+Deployment
node01192.168.1.22
node02192.168.1.23

1.master 基于httpd制作自己的鏡像,需要3個版本,v1,v2,v3.并且對應(yīng)的版本鏡像,訪問的主目錄內(nèi)容不一樣

(1)master下載httpd鏡像

[root@master ~]# docker pull httpd

(2)編寫Dockerfile

[root@master xgp]# vim Dockerfile
FROM httpd
COPY index.html /usr/local/apache2/htdocs/index.html

(3)創(chuàng)建測試網(wǎng)頁v1

[root@master xgp]#echo "<h2>xgp | test-web | httpd:v1<h2>" > index.html

(4)基于Dockerfile創(chuàng)建鏡像 web1

[root@master xgp]# docker build -t web1 .

(5)創(chuàng)建測試網(wǎng)頁v2

[root@master xgp]#echo "<h2>xgp | test-web | httpd:v1<h2>" > index.html

(6)基于Dockerfile創(chuàng)建鏡像 web2

[root@master xgp]# docker build -t web2 .

(7)創(chuàng)建測試網(wǎng)頁v3

[root@master xgp]# echo "<h2>xgp | test-web | httpd:v3<h2>" > index.html

(8)基于Dockerfile創(chuàng)建鏡像 web3

[root@master xgp]# docker build -t web3 .

2.master部署私有倉庫

(1)master下載registry鏡像

[root@master ~]# docker pull registry

(2)啟動registry

[root@master xgp]# docker run -itd --name registry -p 5000:5000 --restart=always registry:latest 

(3)修改docker配置文件,加入私有倉庫(三臺)

[root@master xgp]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.21:5000

kubernetes創(chuàng)建資源的兩種方式

(4)重啟docker(三臺)

[root@master xgp]# systemctl daemon-reload 
[root@master xgp]# systemctl restart docker

3.上傳之前創(chuàng)建的三個web鏡像到私有倉庫

(1)修改鏡像標(biāo)簽

[root@master xgp]# docker tag web1:latest 192.168.1.21:5000/web1:latest
[root@master xgp]# docker tag web2:latest 192.168.1.21:5000/web2:latest
[root@master xgp]# docker tag web3:latest 192.168.1.21:5000/web3:latest

(2)將三個web鏡像上傳到私有倉庫

[root@master xgp]# docker push  192.168.1.21:5000/web1:latest 
[root@master xgp]# docker push  192.168.1.21:5000/web2:latest
[root@master xgp]# docker push  192.168.1.21:5000/web3:latest 

4.部署一個Deployment資源對象,要求鏡像使用上述私有鏡像v1版本。6個副本Pod。

[root@master xgp]# kubectl run www1 --image=192.168.1.21:5000/web1:latest --replicas=6

查看一下

[root@master xgp]# kubectl get pod

kubernetes創(chuàng)建資源的兩種方式

5.將上述Deployment暴露一個service資源對象,使外網(wǎng)能否訪問服務(wù)。

[root@master xgp]#  kubectl expose deployment www1 --name=web-xgp --port=80 --type=NodePort

查看一下

[root@master xgp]# kubectl get svc

kubernetes創(chuàng)建資源的兩種方式

瀏覽器訪問一下

kubernetes創(chuàng)建資源的兩種方式

6.將上述Deployment進(jìn)行擴(kuò)容和縮容操作,擴(kuò)容為8個副本Pod,然后縮容為4個副本Pod。

(1)擴(kuò)容

[root@master xgp]# kubectl scale deployment www1 --replicas=8

查看一下

[root@master xgp]# kubectl get deployments. -o wide

kubernetes創(chuàng)建資源的兩種方式

(2)縮容

修改k8s配置文件

備份web的yaml文件

[root@master ~]# kubectl get deployments. -o yaml > www1.yaml

使用edit修改web的yaml文件

[root@master ~]# kubectl edit deployments. www1

kubernetes創(chuàng)建資源的兩種方式

查看一下

[root@master xgp]# kubectl get deployments. -o wide

kubernetes創(chuàng)建資源的兩種方式

7.將上述Deployment進(jìn)行升級與回滾操作,將v1版本,升級到v2版本。

(1)升級版本為web2

[root@master ~]# kubectl set image deployment www1 www1=192.168.1.21:5000/web2

本機測試訪問

[root@master ~]# curl 127.0.0.1:30996
<h2>xgp | test-web | httpd:v2<h2>

kubernetes創(chuàng)建資源的兩種方式

瀏覽器測試訪問

kubernetes創(chuàng)建資源的兩種方式

(2)回滾版本到web1

<1>修改配置文件回滾

使用edit修改web的yaml文件

[root@master ~]# kubectl edit deployments. www1

kubernetes創(chuàng)建資源的兩種方式

查看一下

[root@master ~]# kubectl get deployments. -o wide

kubernetes創(chuàng)建資源的兩種方式

訪問一下

kubernetes創(chuàng)建資源的兩種方式

<2>命令回滾

[root@master ~]# kubectl rollout undo deployment www1

kubernetes創(chuàng)建資源的兩種方式

注意:只能回滾到上一次操作的狀態(tài)

訪問一下

kubernetes創(chuàng)建資源的兩種方式

____完畢____

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI