前言

从上一篇看来,我们已经对于Kubernetes ,通过minikube 建立集群,而后使用kubectl 进行交互,对Deployment 部署以及服务的暴露等。这节,将学习弹性的将服务部署到多个节点上。

检查

检查部署情况 kubectl get deployments

$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
mynode 1/1 1 1 10m
  • READY 显示当前/所需副本的比率
  • UP-TO-DATE 最新显示已更新以达到所需状态的副本数
  • 显示应用程序有多少副本可供用户使用。
  • AGE 启动时间

kubectl get nodes 检查当前可用节点数

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready master 39m v1.17.2

增加副本数量

kubectl scale deployment <name> --replicas=?

将部署的副本数量调节至指定大小

mrc@mrc-linux:~$ kubectl scale deployment mynode --replicas=4
deployment.apps/mynode scaled

kubectl get pods 可以查看当前POD 的数量

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
mynode-5479db549c-6n6wt 1/1 Running 0 31m
mynode-5479db549c-hvpnr 1/1 Running 0 4m39s
mynode-5479db549c-mzmht 1/1 Running 0 4m39s
mynode-5479db549c-zwg6k 1/1 Running 0 4m39s

查看部署创建的复制集合

kubectl get rs

$ kubectl get rs
NAME DESIRED CURRENT READY AGE
mynode-5479db549c 4 4 4 10h

我们扩容到了四个,所以这里展示的有四个

查看服务状态

$ kubectl get service mynginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mynginx NodePort 10.111.8.25 <none> 80:30857/TCP 5m33s

这里原有的服务就是将nginx 应用80端口暴露到虚拟机30857 端口下

更新应用

在 Kubernetes 中,这些是通过滚动更新(Rolling Updates)完成的。 滚动更新 允许通过使用新的实例逐步更新 Pod 实例,零停机进行 Deployment 更新。新的 Pod 将在具有可用资源的节点上进行调度。

更新镜像


vi Dockerfile FROM nginx
RUN echo '<h1>Update Kubernetes</h1>' > /usr/share/nginx/html/index.html

重新打包

docker build -t mynginx:v1 .

更换部署镜像

$ kubectl.exe set image deployment <deployment> oldimage=newimage
  • deployment 表示需要修改的应用实例
  • oldimage 原本的镜像名称
  • newimage 新的镜像名称
$ kubectl.exe set image deployment/mynginx mynginx=mynginx:v1                                                                                                                                                                                deployment.apps/mynginx image updated

查看POD

kubectl.exe get pods

我们会发现多出来两个POD ,当然这两个POD 是新的,将要替换掉原来老旧的POD

$ kubectl.exe get pods                                                                                                                                                                                                                       NAME                       READY   STATUS        RESTARTS   AGE
mynginx-54fdcfb5dd-h7wwl 1/1 Running 0 11s
mynginx-54fdcfb5dd-jk4n4 1/1 Running 0 9s
mynginx-54fdcfb5dd-m9x45 1/1 Running 0 9s
mynginx-54fdcfb5dd-wbrpz 1/1 Running 0 11s
mynginx-6579cc57f7-pkvgv 0/1 Terminating 0 39m
mynginx-6579cc57f7-zlwzj 0/1 Terminating 0 64m

检查更新结果

$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 45h
mynginx NodePort 10.111.8.25 <none> 80:30857/TCP 125m

获取到暴露出的端口号:30857

回滚

其实回滚和更新是一个操作,是需要将镜像版本进行修改即可完成回滚

小结

到这里,基本上docker 学习就先到一段落吧,从最开始的docker 入门开始,到接触到编排 compose 以及建立虚拟机 docker-machine 再到使用官网的docker swarm 进行集群的创建,任务的部署。走过很大段的一条路。最后我们尝试着接触一些企业里面流行的生产化容器编排 k8S

革命尚未成功,同志任需努力!

DOCKER 学习笔记9 Kubernetes (K8s) 弹性伸缩容器 下的更多相关文章

  1. DOCKER 学习笔记9 Kubernetes (K8s) 生产级容器编排 上

    前言 在上一节的学习中.我们已经可以通过最基本的 Docker Swarm 创建集群,然后在集群里面加入我们需要运行的任务 以及任务的数量 这样我们就创建了一个服务. 当然,这样的方式在我们本地虚拟机 ...

  2. docker学习笔记:修改无法启动的容器中的内容

    我们可能会碰到这样的一个问题,在容器执行过程中,修改了容器的内容(如配置文件信息),但因为修改出了问题.导致容器关闭后,无法启动. 这事需要重新修改配置文件. 正常情况下可以通过 docker exe ...

  3. Docker学习笔记之浅谈虚拟化和容器技术

    0x00 概述 相信所有对 Docker 有所耳闻的朋友都知道,它是一款以容器虚拟化技术为基础的软件,因此在了解有关 Docker 的概念知识和使用方法之前,虚拟化和容器技术是我们不可或缺的基础知识. ...

  4. Docker学习笔记_创建和使用Centos容器

    实验:创建和使用Centos容器 步骤: 1.搜索                                                     sudo docker search cen ...

  5. k8s 弹性伸缩

    k8s弹性伸缩,需要附加插件heapster 1.安装heapster监控 1:上传并导入镜像,打标签 ls *.tar.gz for n in `ls *.tar.gz`;do docker loa ...

  6. k8s弹性伸缩概念以及测试用例

    k8s弹性伸缩概念以及测试用例 本文原文出处:https://juejin.im/post/5c82367ff265da2d85330d4f 弹性伸缩式k8s中的一大亮点功能,当负载大的时候,你可以对 ...

  7. Docker学习笔记 — 配置国内免费registry mirror

    Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror

  8. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  9. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

随机推荐

  1. Spring--2.Spring之IOC--了解IOC容器

    IOC(容器),用来集成别的框架 1.IOC(Inversion(反转)Of Control):控制反转 控制:资源的获取方式: 主动式: BookServlet{ BookService bs=ne ...

  2. python封装简介

    1.效果图: 对比一: 对比二: 2.学习来源代码: # 封装是面向对象的三大特性之一 # 封装指的是隐藏对象中一些不希望被外部所访问到的属性或方法 # 如何隐藏一个对象中的属性? # - 将对象的属 ...

  3. 初入python,与同学者的第一次见面(小激动)

    自2017来,接触python其实已经算是蛮久了,最苦的时光还是刚开始的时候,真的,我感觉编程就是一种感觉,有的时候就像找对象一样,感觉对了,怎么学都是带劲哈哈哈.在这个周围都在学习PHP的环境下,我 ...

  4. javaweb-codereview 学习记录-3

    Class类加载流程 实际上就是ClassLoader将会调用loadclass来尝试加载类,首先将会在jvm中尝试加载我们想要加载的类,如果jvm中没有的话,将调用自身的findclass,此时要是 ...

  5. 最新中级java面试总结

    最近面试了不少家公司,从一家非外包跳到了外包(委屈脸Ծ‸Ծ),下面总结一下最近的一些心得体会 1.如果在做技术只是为了过日子,而没多大兴趣,那你必须需要考虑一下行业发展方向了.选定一个行业,深入某个行 ...

  6. 安全性与收尾工作 运用过滤器进行授权 精通ASP-NET-MVC-5-弗瑞曼

  7. 双指针,BFS和图论(三)

    (一)图论 1.大臣的旅费 很久以前,T王国空前繁荣. 为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市. 为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任 ...

  8. 图解kubernetes调度器SchedulerExtender扩展

    在kubernetes的scheduler调度器的设计中为用户预留了两种扩展机制SchdulerExtender与Framework,本文主要浅谈一下SchdulerExtender的实现, 因为还有 ...

  9. JSP-导入taglib 出现classNotFound异常

    案例 前端登录跳转到指定jsp,报classNoFoundException,原因是页面导入 <%@ taglib uri="http://java.sun.com/jsp/jstl/ ...

  10. Spring Boot 2.x基础教程:使用国产数据库连接池Druid

    上一节,我们介绍了Spring Boot在JDBC模块中自动化配置使用的默认数据源HikariCP.接下来这一节,我们将介绍另外一个被广泛应用的开源数据源:Druid. Druid是由阿里巴巴数据库事 ...