k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

两种创建资源的方法

基于命令的方式:

  1. 简单直观快捷,上手快。
  2. 适合临时测试或实验。

基于配置文件的方式:

  1. 配置文件描述了 What,即应用最终要达到的状态。
  2. 配置文件提供了创建资源的模板,能够重复部署。
  3. 可以像管理代码一样管理部署。
  4. 适合正式的、跨环境的、规模化部署。
  5. 这种方式要求熟悉配置文件的语法,有一定难度。

一,用命令行的方式创建资源

仅接受json格式

配置清单(yml、yaml)

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

1.node01和node02下载nginx镜像

docker pull nginx
//下载nginx镜像

2.master创建Pod控制器(test-web),deployment

[root@master ~]# kubectl run test-web --image=nginx --replicas=5
//创建Pod控制器,deployment

3.查看控制器情况

(1)

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

[root@master ~]# kubectl get pod --all-namespaces -o wide
//显示pod的节点信息

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

(2)

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

[root@master ~]# kubectl describe deployments. test-web
//查看资源详细信息

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

查看某种资源对象,没有指定名称空间,默认是在default名称空间。可以加上-n选项,查看指定名称空间的资源。

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

3.删除test-web控制器

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

4.master创建Pod控制器(web),deployment

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

查看一下pod信息

[root@master ~]# kubectl get pod -o wide
//查看一下pod的节点信息

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

[root@master ~]# kubectl describe deployments. web 
//查看资源详细信息

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

注意:直接运行创建的deployment资源对象,是经常使用的一个控制器资源类型,除了deployment,还有rc、rs等等pod控制器,deployment是一个高级的pod控制器。

本机测试访问nginx

[root@master ~]# curl 10.244.1.7

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

5.创建service资源类型

[root@master ~]# kubectl expose deployment web --name=web-xgp --port=80 --type=NodePort
//创建service资源类型,这里我们设置了映射端口

如果想要外网能够访问服务,可以暴露deployment资源,得到service资源,但svc资源的类型必须为NodePort。

映射端口范围:30000-32767

查看service信息

[root@master ~]# kubectl get svc

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

浏览器测试访问http://192.168.1.21:30493/

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

二、服务的扩容与缩容

1. 查看控制器信息

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

2.扩容

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

查看一下

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

3.缩容

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

查看一下

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

3.通过修改web的yaml文件进行扩容缩容

备份web的yaml文件

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

使用edit修改web的yaml文件

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

查看一下

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

三、服务的升级与回滚

node01和node02下载1.15版本的nginx

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

1.master设置服务升级

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

查看一下

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

2.master设置服务回滚

(1)修改配置文件回滚

使用edit修改web的yaml文件

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

查看一下

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

(2)命令回滚

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

注意:只能回滚到上一次操作的状态

四、小实验

实验环境

主机 IP地址 服务
master 192.168.1.21 registry+Deployment
node01 192.168.1.22
node02 192.168.1.23

1.master 基于httpd制作自己的镜像,需要3个版本,v1,v2,v3.并且对应的版本镜像,访问的主目录内容不一样

(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)创建测试网页v1

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

(4)基于Dockerfile创建镜像 web1

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

(5)创建测试网页v2

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

(6)基于Dockerfile创建镜像 web2

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

(7)创建测试网页v3

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

(8)基于Dockerfile创建镜像 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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

(4)重启docker(三台)

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

3.上传之前创建的三个web镜像到私有仓库

(1)修改镜像标签

[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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

5.将上述Deployment暴露一个service资源对象,使外网能否访问服务。

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

查看一下

[root@master xgp]# kubectl get svc

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

浏览器访问一下

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

6.将上述Deployment进行扩容和缩容操作,扩容为8个副本Pod,然后缩容为4个副本Pod。

(1)扩容

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

查看一下

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

(2)缩容

修改k8s配置文件

备份web的yaml文件

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

使用edit修改web的yaml文件

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

查看一下

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

7.将上述Deployment进行升级与回滚操作,将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
<h1>xgp | test-web | httpd:v2<h1>

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

浏览器测试访问

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

(2)回滚版本到web1

<1>修改配置文件回滚

使用edit修改web的yaml文件

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

查看一下

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

访问一下

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

<2>命令回滚

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

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

注意:只能回滚到上一次操作的状态

访问一下

k8s创建资源(1)、<扩容与缩容>和<升级与回滚>

____完毕____

猜你喜欢

转载自blog.51cto.com/14320361/2464655