码迷,mamicode.com
首页 > Web开发 > 详细

kubernetes1 4 基础篇 Learn Kubernetes 1 4 by 6 steps(3) Step 2

时间:2019-01-20 14:02:20      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:linu   sys   lan   discovery   policy   k8s   为什么   描述   disco   

在上一篇文章中我们学习到了如何快速搭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 ~]#
  • 1
  • 2
  • 3
  • 4

确认构成

命令: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 ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

创建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
  • 2
  • 3
  • 4
  • 5

此文件根官方最新文件的不同点仅在于其版本号我们使用的是前面下载下来的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]#
  • 1
  • 2
  • 3
  • 4

可以看到「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]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

确认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了
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

访问URL:http://192.168.32.31:31276

技术分享图片

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

技术分享图片

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

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

kubernetes1 4 基础篇 Learn Kubernetes 1 4 by 6 steps(3) Step 2

标签:linu   sys   lan   discovery   policy   k8s   为什么   描述   disco   

原文地址:https://www.cnblogs.com/firsttry/p/10294366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!