本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。

翻译:Edison Zhou

  

一、基本介绍

  此交互实验可以让你不用搭建K8S环境就可以轻松地尝试管理一个简单的容器化应用集群,可以学习到以下内容:
  • 部署一个容器化应用到一个集群中
  • 对部署进行伸缩(Scale)
  • 更新容器化应用至一个新版本
  • Debug容器化应用
  此交互实验主要基于虚拟终端(Virutal Terminal),可以直接在你的Web浏览器中运行Minikube,这是一个可以随处运行K8S的最小化的本地K8S环境,不需要你安装任何软件和做任何配置。

二、实验内容

  1. 创建一个集群
  2. 部署一个应用
  3. 访问当前应用
  4. 伸缩当前应用
  5. 滚动更新应用

三、具体步骤

创建一个集群

  选中“Create a Cluster"=>"Interactive Tutorial - Creating a Cluster",从这里开始
  
  然后会看到提示和终端的界面,这是一个基于Minikube的K8S终端:
  
  通过在终端中执行 minikube start 来创建一个单节点的K8S集群:
  
  通过执行 kubectl cluster-info 可以查看集群信息:
  

部署一个应用

  这里部署一个示例应用,执行以下命令:
kubectl run kubernetes-bootcamp \
--image=docker.io/jocatalin/kubernetes-bootcamp:v1 \
--port=
  这里kubectl run是老版本的命令,即将被废除,建议使用kubectl create替代。
  
  通过执行kubectl get pods可以看到,当前的kubernetes-bootcamp-7dc9765bf6-dgmz8就是当前应用的Pod。

访问当前应用

  默认情况下,所有Pod只能在集群内部访问,想要从外部访问,就必须映射端口。
kubectl expose deployment/kubernetes-bootcamp \
--type="NodePort"
--port
  可以看到,映射成功:
  
  执行命令 kubectl get services,可以看到应用被映射到了节点的哪个端口:
  
  可以看出,当前应用所处的服务被映射到了32752端口上,这个端口是随机分配的。因为采用NodePort方式的话,是会在30000-32767区间随机取一个端口号。
怎么验证部署的应用是否可以访问?
curl your-cluster-ip:
  效果如下图所示:
  

伸缩当前应用

  默认情况下,应用只会运行一个副本,可以通过kubectl get deployments来查看:
  
  那么,如果需要增加副本数,可以通过命令kubectl scale来增加,如下图所示,可以看到现在已经由1个副本增长为了3个副本了:
  
  由于Pod是K8S资源调度的最小单位,因此执行kubectl get pods也可以验证Pod的数量:
  
  这时,可以通过curl再次访问应用,便可以看到这些请求都会发往不同的Pod(也不一定完全是每次都会转发给不同的Pod),因为我们有3个副本会负载均衡:
  
  如果不需要很多的副本来负载均衡,也可以收缩副本数量,比如收缩到2个副本:
kubectl scale deployments/kubernetes-bootcamp --replicas=
  

滚动更新应用

  当前应用kubernetes-bootcamp所用的image的版本为v1,假设现在有了新版本,可以通过以下命令来将其升级到v2。
kubectl set image deployments/kubernetes-bootcamp \
kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
  从下图可以看到,更新版本之后原先v1的两个Pod便已经在被停止,进而创建了两个新的Pod:
  
  过了几秒之后,再次查看,原先的两个v1的Pod已经被删除:
  
  这时可以通过curl进行验证,可以发现版本号已经升级为了v2:
  
  这时如果发现v2存在某个百年一遇的大Bug(不容易发现那种),想要快速回退到上个版本v1,可以通过以下命令来快速回退:
kubectl rollout undo deployments/kubernetes-bootcamp
  可以看到回退之后,v2的两个Pod就被停止了,进而新创建了两个v1的Pod:
  
  这时如果再进行curl验证,可以发现版本变为了v1了:
  

四、实验小结

  这里通过官网的交互实验教程快速的体验了一把K8S的基本功能使用,全程通过kubectl来调用的K8S API,相信会对完全没接触K8S的童鞋有帮助。

参考资料

  K8S指导手册https://kubernetes.io/docs/tutorials
  每天5分钟玩转K8Shttps://item.jd.com/12329528.html

作者:周旭龙

出处:http://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

【译】Hello Kubernetes快速交互实验手册的更多相关文章

  1. (私人收藏)[开发必备]HTML5最全快速查找离线手册(可查询可学习,带实例)

    [开发必备]HTML5最全快速查找离线手册(可查询可学习,带实例) HTML5最全快速查找离线手册:https://pan.baidu.com/s/19seE8TJQSx4IsWgXtKQS0Aj9y ...

  2. 成都国嵌-嵌入式linux必修实验手册…

    emouse收集整理,转载请注明: emouse的技术专栏 博客园:http://www.cnblogs.com/emouse/ CSDN:http://blog.csdn.net/haozi_198 ...

  3. Kubernetes快速入门

    二.Kubernetes快速入门 (1)Kubernetes集群的部署方法及部署要点 (2)部署Kubernetes分布式集群 (3)kubectl使用基础 1.简介 kubectl就是API ser ...

  4. PHP进阶,使用交互模式进行快速测试实验?

    额,那啥,PHP很强,大家都知道哈.不过呢,在搞PHP里的人中,自然也要分高下的.当然了,我更喜欢用好玩来形容了. 什么叫做快速开发?我觉得,快就得快到随手写几个字,就能让代码跑起来!那么,PHP能做 ...

  5. 【Win2D】【译】Win2D 快速入门

    原文链接:http://microsoft.github.io/Win2D/html/QuickStart.htm 快速入门 这是 Win2D 的快速入门教程,将会介绍 Win2D 中的基本功能.你将 ...

  6. CCIE-MPLS基础篇-实验手册

    又一部前期JUSTECH(南京捷式泰)工程师职业发展系列丛书完整拷贝. MPLS(Multi-Protocol Label Switching) 目录 1:MPLS 基础实验.... 1.1实验拓扑. ...

  7. 【实验手册】使用Visual Studio Code 开发.NET Core应用程序

    .NET Core with Visual Studio Code 目录 概述... 2 先决条件... 2 练习1: 安装和配置.NET Core以及Visual Studio Code 扩展... ...

  8. 802.1X和NAP整合实验手册

    实验描述 公司内部有多个部门,创建了域的架构,并搭建了DHCP服务器和Radius服务器,要求每个部门都独享一个网段,实现每位用户插上网线后,跳出窗体进行身份验证,如果用户通过验证,根据用户所在的部门 ...

  9. 译: 3. Axis2快速入门指南

    本指南的目的是让您尽快使用Axis2开始创建服务和客户端.我们将采用一个简单的StockQuote服务,向您展示可以创建和部署它的一些不同方式,以及快速查看Axis2附带的一个或两个实用程序.然后,我 ...

随机推荐

  1. Spring Boot:使用Rabbit MQ消息队列

    综合概述 消息队列 消息队列就是一个消息的链表,可以把消息看作一个记录,具有特定的格式以及特定的优先级.对消息队列有写权限的进程可以向消息队列中按照一定的规则添加新消息,对消息队列有读权限的进程则可以 ...

  2. CentOS下安装配置MySQL8.0的步骤详解

    下载yum源的安装包 yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm 安装 yu ...

  3. CSS3常用选择器

    一.基本选择器 子元素选择器 概念:子元素选择器只能选择某元素的子元素语法格式:父元素 > 子元素 (Father > Children)兼容性:IE8+.FireFox.Chrome.S ...

  4. 利用mapWithState实现按照首字母统计的有状态的wordCount

    最近在做sparkstreaming整合kafka的时候遇到了一个问题: 可以抽象成这样一个问题:有状态的wordCount,且按照word的第一个字母为key,但是要求输出的格式为(word,1)这 ...

  5. 用户点击获取验证码之后我们会发送一条信息到用户手机,然后就会出现一个倒计时按钮,很像支付宝手机付款效果了,下面我给大家分享两个js效果

    js代码  代码如下 复制代码 <div class="input">    <input type="button" id="bt ...

  6. 并发编程-concurrent指南-ReadWriteLock-ReentrantReadWriteLock(可重入读写锁)

    几个线程都申请读锁,都能获取: import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantRea ...

  7. 设计模式:代理模式是什么,Spring AOP还和它有关系?

    接着学习设计模式系列,今天讲解的是代理模式. 定义 什么是代理模式? 代理模式,也叫委托模式,其定义是给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用.它包含了三个角色: Subject: ...

  8. 1. 在Mac OS中配置CMake的详细图文教程

    CMake是一个比make更高级的跨平台的安装.编译.配置工具,可以用简单的语句来描述所有平台的安装(编译过程).并根据不同平台.不同的编译器,生成相应的Makefile或者project文件.本文主 ...

  9. ASP.NET Core系列(一): .NET Core简介及安装开发环境

    大家都知道Java是跨平台的,.NET因为不具有跨平台的特性,被越来越多的开发者诟病,之前有各种间接的跨平台的方案,比如mono.但是由于各种兼容问题,最终 .NET Core出现了,它可以让程序在W ...

  10. web项目超时方案

    1. 场景描述 平台使用的Greenplum(内核是postgresql8.2)集群存储大数据量数据(每天一个表大概3亿),因为数据量比较大,所以在使用上有些限制,一是操作限制:二是不限制,但是到一定 ...