在上一篇文章中我们学习到了如何快速搭k8s的集群。本文将会将会学到Kubernetes的应用部署(Deployment),以及如何使用kubectl来部署我们的应用。被部署的应用我们将直接使用kubernetes1.4在发布时候所提到的宣称能实现CLI的90%的操作的Dashboard,没有强迫症的话,能够鼠标点击完成的事情为什么一定要使用键盘呢,如果Dashboard很好用的话,这部分不通过敲击键盘来做到对使用者也是一个福音。
我们可以在学习之余体验一下Kubernetes1.4的dashboard是否真的如同其所宣称的那样方便,何乐而不为

Kubernetes基础

什么是Deployment

在Kubernetes中,Deployment是用来负责创建和更新应用程序实例的

为什么要容器化

在Kubernetes中,为了能够被部署,应用程序需要被打包成为其所支持的容器格式(docker/rkt)

Kubernetes Deployment

在上篇文章中,我们创建了一个具有3个node的kubernetes集群.

有了这个集群,接下来我们就可以把容器化了的应用部署到其中了。

首先,我们要创建一个kubernetes的Deployment。这个Deployment是用来负责创建和更新我们应用程序实例的。
而一旦这个应用创建好了之后,Kubernetes的Master会协调在集群的哪个node上俩创建应用实例。
而一旦应用实例被创建之后,Kubernetes的Deployment Controller就会持续的监视这些应用实例。
一旦发生机器故障或者其他不可预知的情况导致应用实例停止时,一直在监视的Deployment Controller就立即知道这一情况,然后它就会重新生成新的应用实例
Kubernetes提供了这种在故障发生时的自愈机制,这个机制也是使用Kubernetes提案的时候反复被背书的能力。

创建Deployment

可以使用Kubernetes的命令行接口kubectl,kubectl只安装在Master上,通过使用kubernetes的API与集群进行交互。

确认版本

命令:kubectl version。 其实我们在安装完成的时候如果你还有印象的话就会记得已经用过这条命令了,其结果显示如下,client和Server均为1.4.1版本

[root@host31 ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"4", GitVersion:"v1.4.1", GitCommit:"33cf7b9acbb2cb7c9c72a10d6636321fb180b159", GitTreeState:"clean", BuildDate:"2016-10-10T18:19:49Z", GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"4", GitVersion:"v1.4.1", GitCommit:"33cf7b9acbb2cb7c9c72a10d6636321fb180b159", GitTreeState:"clean", BuildDate:"2016-10-10T18:13:36Z", GoVersion:"go1.6.3", Compiler:"gc", Platform:"linux/amd64"}
[root@host31 ~]#

确认构成

命令:kubectl get nodes。 通过这条命令我们可以确认到此集群的构成以及各组成node的状态是否都是ready

[root@host31 ~]# kubectl get nodes
NAME      STATUS    AGE
host31    Ready     2h
host32    Ready     1h
host33    Ready     1h
host34    Ready     1h
[root@host31 ~]#

创建Deployment

事前准备

可以使用kubectl run的方式创建也可以使用yaml文件+kubectl create的方式进行创建。本次我们采用后者。首先下载一下kubernetes-dashboard.yaml。而这个文件和easypack_kubernetes.sh在同级目录,上篇文章中在git clone取得的时候已经在本地了。

[root@host31 k8s]# pwd
/root/easypack/k8s
[root@host31 k8s]# ls
easypack_kubernetes.sh  kubernetes-dashboard.yaml  README.md
[root@host31 k8s]#

此文件根官方最新文件的不同点仅在于其版本号我们使用的是前面下载下来的1.4.1,现在最新应该已经是1.4.2了。另外还有一点就是imagePullPolicy我们从Always修改成IfNotPresent了。不然,无论如何它都回去pull这个镜像,网络有不允许,基本上kubernetes1.4的安装和使用就只有和这点相关的有些小坑,体验真心不错。

创建

命令: kubectl create -f kubernetes-dashboard.yaml

[root@host31 k8s]# kubectl create -f kubernetes-dashboard.yaml
deployment "kubernetes-dashboard" created
service "kubernetes-dashboard" created
[root@host31 k8s]#

可以看到「deployment “kubernetes-dashboard” created」的提示信息,这表明已经成功创建了一个Deployment,同时还有一个service也被创建出来了,至于service在Kubernetes中扮演什么角色, 后续的文章中会专门讲解,此处不再赘述。

确认Deployment

get deployments

使用kubectl get deployments可以列出当前的Deployment及其他信息

[root@host31 k8s]# kubectl get deployments --namespace=kube-system
NAME                   DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kube-discovery         1         1         1            1           2h
kube-dns               1         1         1            1           2h
kubernetes-dashboard   1         1         1            1           3m
[root@host31 k8s]#

确认Dashboard

命令:kubectl describe svc kubernetes-dashboard –namespace=kube-system
使用此条命令可以确认出该service对外暴露出的可以访问的端口,通过此端口我们可以访问Kubernetes的Dashboard UI界面

[root@host31 k8s]# kubectl describe svc kubernetes-dashboard --namespace=kube-system
Name:                   kubernetes-dashboard
Namespace:              kube-system
Labels:                 app=kubernetes-dashboard
Selector:               app=kubernetes-dashboard
Type:                   NodePort
IP:                     10.4.41.47
Port:                   <unset> 80/TCP
NodePort:               <unset> 31276/TCP
Endpoints:              10.36.0.1:9090
Session Affinity:       None
No events.[root@host31 k8s]#
注解:NodePort 31276 为此服务对外暴露的端口号,通过它和IP即可访问Kubernetes1.4的Dashboard了

访问URL:http://192.168.32.31:31276

namespace和node信息,可以清楚地看到其是由4台机器构成的kubernetes集群。

当然号称可以完成cli的90%功能的dashbaord不仅仅限于查看一下构成而已。详细使用方法可以自行探索,此处不再废话。

kubernetes1.4 基础篇:Learn Kubernetes 1.4 by 6 steps(3):Step 2. Using kubectl to Create a Deployment相关推荐

  1. kubernetes1.4 基础篇:Learn Kubernetes 1.4 by 6 steps(2):Step 1. Create a Kubernetes cluster

    在本文中我们将会将会学到如何利用kubeadm快速创建集群, 和google的官方教程气提供的交互式minikube不同,我们将会创建一个真正的由3个node和一个master构成的k8s的几乎最小的 ...

  2. Kubernetes入门指南-基础篇

    Kubernetes入门指南-基础篇 基础入门 kubernetes简介 kubernetes是一个平台 kubernetes架构 kubernetes不是什么 核心组件 kubernetes基本概念 ...

  3. 通过Rancher部署并扩容Kubernetes集群基础篇一

    一 应用场景描述 持续跟踪研究Kubernetes也有一段时间了,Kubernetes作为谷歌开源的生产级别的容器调度系统从开源初始便获得了众多的关注.一些有研发实力的公司调研过Kubernetes的 ...

  4. 学习笔记---程序员练级攻略(入门篇、修养篇、专业基础篇、软件设计篇、高手成长篇)

    根据极客时间 左耳朵耗子 整理,请忽略每一行最后的数字 文章目录 1. 入门篇 47 2. 修养篇 51 3. 专业基础篇 56 4. 软件设计篇 60 5. 高手养成 63 1. 入门篇 47 1. ...

  5. 7.3 TensorFlow笔记(基础篇):加载数据之从队列中读取

    前言 整体步骤 在TensorFlow中进行模型训练时,在官网给出的三种读取方式,中最好的文件读取方式就是将利用队列进行文件读取,而且步骤有两步: 1. 把样本数据写入TFRecords二进制文件 2 ...

  6. 7.2 TensorFlow笔记(基础篇): 生成TFRecords文件

    前言 在TensorFlow中进行模型训练时,在官网给出的三种读取方式,中最好的文件读取方式就是将利用队列进行文件读取,而且步骤有两步: 1. 把样本数据写入TFRecords二进制文件 2. 从队列 ...

  7. 尚硅谷docker基础篇 2018版

    typora-root-url: ./image Docker基础篇之快速上手 第一章 Docker简介 是什么? 问题:为什么会有 docker 的出现 一款产品从开发到上线,从操作系统,到运行环境 ...

  8. 学习C++:C++进阶(三)CMake基础篇---用一个小型项目了解CMake及环境构建

    V1.1 于2022年7月15日第二次修改:添加了比较多的解释图,解读了各类库的CMakelist.txt文件 目录 第一部分 基础篇(Basics) 1.0 本部分主要学什么(Intro) 1.1 ...

  9. SpringBoot【基础篇】

    SpringBoot2[基础篇] 官方网址:https://spring.io/projects/spring-boot#learn 文章目录 SpringBoot2[基础篇] 第一章:springb ...

最新文章

  1. oracle中max,listagg使用,需求:求门诊开甲功三项的病人的基本信息与化验结果的数据,...
  2. Python @函数装饰器用法
  3. ASP.NET MVC系列:UrlRouting
  4. snapchat注册不到_从Snapchat获得开发人员职位中学到的经验教训
  5. 转:【微信小程序】实现锚点定位楼层跳跃的实例
  6. 主动提交事务_对于分布式事务,我“开门见山”地谈到这些理解,面试官都听懵了...
  7. pp助手苹果版本_曾经iOS一代越狱神奇器,PP助手宣布凉凉
  8. 22000字深入研究消费电子光学传感器行业
  9. 分享这款不限速免费下载神器,能在任何操作系统上使用
  10. 先验 超验_先验 和 超验 名词解释
  11. 智能化工厂数字化管理系统软件解决方案
  12. 深以为然-为什么一些JAVA EE / J2EE 工程是效率低下或者至少是效率欠佳的(翻译)
  13. java apdu读取社保卡_使用javax.smartcardio的用于智能卡的ISO 7816 APDU
  14. 小学计算机画线反思,会画画的线活动反思
  15. 乔布斯一生都在模仿的偶像:两度从哈佛大学退学的发明家Edwin H. Land
  16. Vue错误03:Property or method “xxx“ is not defined on the instance but referenced during render.
  17. c语言程序设计拉丁方阵结构图,C语言程序设计100例之(29):拉丁方阵
  18. 【web前端】pc网页适配移动网页和css布局之间的矛与盾
  19. 因果分析系列1--入门
  20. 智慧水位远程监测报警系统

热门文章

  1. Yapi 接口平台(Windows、Linux 在线离线安装部署)
  2. requests请求get接口报错UnicodeEncodeError: ‘latin-1‘ codec can‘t encode characters in position 13-14
  3. Paging内部原理
  4. Java编程思想日志
  5. 起先于心血来潮的linux学习...
  6. BZOJ3631 [JLOI2014]松鼠的新家
  7. SpringBoot 实现 Office 各种格式在线预览(详细教程,包教包会)
  8. php mysql 变量赋值_mysql存储过程中变量的定义赋值操作
  9. GAN生成对抗网络合集(三):InfoGAN和ACGAN-指定类别生成模拟样本的GAN(附代码)
  10. 连接阿里云生活物联网平台(飞燕平台)步骤记录