专栏首页SDNLABkubernetes三种打开方式

kubernetes三种打开方式

kubernetes是容器管理编排引擎,是继openstack之后又一个优秀的云计算系统。kubernetes有着灵活,快速,健壮等特点,同时全面拥抱微服务架构,是当前容器管理方面主流的系统。本文简单总结kubernetes系统的命令行,dashboard和客户端使用方法。通过三种使用方式的操作,给初学者一个直观的认识。

安装方式

kubernetes的安装方式参考:

https://github.com/gjmzj/kubeasz/blob/master/docs/setup/quickStart.md

一、命令行操作

查看系统信息

kubectl version 查看kubernetes版本信息。该版本是1.9.8,最新版本是2018.9.27发布的1.12。

查看kubernetes系统的节点信息。由于我是all in one安装,所以只有一个节点。

创建

启动一个应用。test-two是应用的名字;—image指定了应用的镜像,是一个安装好web应用的镜像;—replicas指定应用副本数。不用担心没有镜像,当docker启动一个不存在的镜像时会去远端请求镜像,kubernetes同样也是。

验证

查看系统中的deployment。可以看到刚刚创建的test-two应用。

查看pod的ip地址,通过ip地址可以检验docker中的应用是否启动。

httpd镜像里安装的是web应用,通过80端口能够访问到应用。

Kubernetes的一个优点是能够保持应用的稳定性,通过维持docker的数量来完成。删除一个副本,可以发现立刻又重新创建了一个。这就是kubernetes保持应用健壮性的关键。

前面使用是命令行参数创建应用,这种方式缺点是参数复杂,不易记忆。更常用的创建方式是使用文件来创建应用。简单比较基于命令行和基于配置文件两种方式的特点:

基于命令的方式:

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

基于配置文件的方式:

  1. 配置文件提供了创建资源的模板,能够重复部署
  2. 配置文件能够像代码一样管理部署
  3. 适合正式的、跨环境的、规模化部署

使用文件创建deployment

deployment的定义文件。

关键参数:

  • kind:表明创建服务的类型,这里是deployment。
  • name:应用的名字。
  • labels:将创建的pod贴上一个标签。通过标签能够区分不同的pod。
  • images:使用的镜像。
  • ports:容器监听系统的80端口

使用命令:kubectl creat -f httpd.yaml,成功创建应用。

查看创建好的pod,可以发现新建的两个以httpd-deployment开头的docker。

为了能够从浏览器访问到创建好的应用,这里要再创建一个service。可以简单理解service是访问控制。

service定义文件

  • kind:service,表示创建的是一个service。
  • name:service 名字。
  • type:NodePort service类型的一种,动态分配一个端口用于外部访问。
  • app:httpd 指定为拥有app:httpd这个标签的pod创建service。
  • port:8080 监听系统的8080端口的请求
  • targetPort 将8080端口的请求转发给80端口。因为httpd docker使用80端口,所有能够将请求转发进来。

查看创建好的service,service负责监听主机的36980端口,流量转发给8080,8080再转发给80,这样通过访问node节点的ip+36980端口就能访问到应用。

通过浏览器访问

更多命令行操作参考:

http://docs.kubernetes.org.cn/683.html

二、Dashboard操作

Dashboard是界面操作,登录系统之后的界面如下:

部署的应用

所有的容器

所有的副本

所有的服务

目前系统中没有用户创建的服务,kubernetes是系统自带的服务

创建:

界面创建的过程比较直观,首先右上角创建按钮

创建界面。界面有三种创建方式:可以选择从文本创建、从文件创建、从应用创建。这里使用从文本创建,输入刚刚在命令行时使用的yaml文件。

创建中:

验证:

应用创建完成。

除了部署里显示最新的应用,创建完成之后容器组更新了所有容器状态,

再创建一个service。将service的yaml文件内容输入。

创建好之后可以发现,26896是外部能够访问应用的端口。

浏览器打开,是成功的。

通过dashboard也可以访问docker容器。选择一个容器组进入,点击运行命令。

进入http-deployment-two其中一份副本中,可以直接对docker操作。

三、python客户端2

通过以上两种方式基本上能够满足kubernetes管理,运维的工作,但是如果要对其进一步开发和使用,还需要调用kubernetes的API接口完成相应的工作。

kubernetes的核心组件apiserver,提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制。通过apiserver,可以完成对Controller,Pod,Service等服务的增删改查。

目前官方自持的客户端库

使用python客户端需要分为三步:

  1. 从github下载代码
  2. 安装python客户端
  3. 配置访问控制
  • 下载客户端代码
  • 安装客户端

首先安装pip工具

进入代码文件夹,安装客户端

  • 客户端访问权限

客户端想要访问系统,必须要拥有访问权限。可以通过配置文件来完成访问者的权限鉴别。系统中的~/.kube/config,这个文件包含kubernates集群的入口地址,访问的用户和相应的认证信息,使用时,将这个配置文件拷贝到本地,然后客户端通过加载这个配置文件来定位和认证apiserver。

  • 创建:

以对deployment的创建,删除为例,简单说明客户端的使用方式。在库文件中的example.py文件中,有对应用的增,删,改。

创建主要代码:

创建一个应用主要完成4步:

  1. 加载配置文件,找到endpoint和获取权限。
  2. 创建python客户端api。
  3. 创建客户端对象。
  4. 调用客户端对象,完成创建具体请求。

其中,创建deployment的具体参数如镜像、名称、副本、api版本等在第3步中,下面具体查看创建的参数。

deployment的名称

参数:

第一个:docker镜像版本,监听端口。

第二个:应用的副本数。

第三个:api的版本。

python deployment_examples.py执行命令,返回信息。

验证:

查看应用,kubectl-client-demo即创建好的应用。

删除:

删除一共也是4步:

  1. 加载配置文件,拥有访问endpoint和权限。
  2. 创建python客户端api。
  3. 创建客户端端对象。
  4. 调用客户端对象,完成删除具体请求。

python deployment_example.py执行删除,返回显示信息。

验证:

更多客户端操作参见:

http://docs.kubernetes.org.cn/31.html

总结:

  • 图形化操作的优点是简单,直观,同时缺点也很明显,那就是请求数量过大时会造成拥塞或者需要自动化运维的场景无法完成。所以图形化操作适用于日常管理和学习。
  • 命令行操作本质是调用Restful api,但相对于调用接口的复杂,命令行优势在于简化了其复杂性,同时也最大程度的保留了接口的全面性。
  • 客户端能够完成使用者所希望的所有的操作,无论是直接操作还是被其他程序调用。不同语言都可以调用接口编写自己的客户端程序,极大提高了系统的兼容性。

Kubernetes的三种使用方式,涵盖了日常管理、运维、开发等多个场景。对于管理和运维来说,图形化和命令行就能很好的胜任,对于系统集成或者深度使用,客户端是一个很好的选择。

附 完整客户端使用示例文件deployment_examples.py

本文分享自微信公众号 - SDNLAB(SDNLAB)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 不知道选择多云还是混合云?先把概念弄清楚吧

    云计算是当今的企业争相从中捞金的领域,得益于AWS等云计算公司长达十多年时间的教育市场,云计算现在已经获得了相当大的企业用户基础,云计算创业公司也比比皆是,但即...

    SDNLAB
  • 思科重返网络市场,下一步它准备怎么走?

    自Chuck Robbins接任思科首席执行官以来,思科的转变不容忽视。2015年8月Chuck Robbins上任,思科的股票交易价格约为每股25美元,多年来...

    SDNLAB
  • 网络功能虚拟化系列:NFV的开源软件包

    本文系SDNLAB社区译者计划发布文章,SDNLAB将与国外优质媒体和个人进行长期的内容合作,带来更多的优质技术文章,本文是<<网络功能虚拟化:新兴的虚拟化网...

    SDNLAB
  • 常见形式 Web API 的简单分类总结

    请求--响应类的API的典型做法是,通过基于HTTP的Web服务器暴露一个/套接口。API定义一些端点,客户端发送数据的请求到这些端点,Web服务器处理这些请求...

    solenovex
  • WCF学习笔记 3

    请求/响应通信是指客户端向服务端发送消息后,服务端会向客户端发送响应。这也意味着在接收到服务的响应以前,客户端不会继续执行操作。

    小蜜蜂
  • centOS 如何安装 lnmp 环境

    魏艾斯博客www.vpsss.net
  • JSShell:一个基于python的交互式Shell

    JSShell 本文将给大家介绍一款基于Web的多用户交互式Shell,该工具采用Python语言编写,服务器端使用的是Flask框架,而客户端当然就是Java...

    FB客服
  • Cordova+React+Ant.design项目搭建

    治电小白菜
  • Excel应用实践13:制作产品选型表,在用户窗体中实现级联下拉列表

    在网站中,我们经常会碰到需要一层层向下选择的情况。在第一个选项列表中选择第一个数据,第二个选项列表中选择第二个数据,依此类推。并且,后面的选项列表内容会根据前...

    fanjy
  • 这是不是 PowerBI 原生作图的最高境界 - 案例:对比积累分析图

    如果让分析师去做一些高信息含量的图表,那该图一定位列其中,因为企业几乎都是是目标(结果)导向的,对此,KPI的达成就是关键的信息了。

    BI佐罗

扫码关注云+社区

领取腾讯云代金券