返回首页> Openstack > 在Openstack上创建并访问Kubernetes集群
跳过导航链接

在Openstack上创建并访问Kubernetes集群

文章摘要: 在Openstack上创建并访问Kubernetes集群: 第一部分:创建集群   在Openstack部署Kubernetes集群运行Nginx容器的步骤,其中包括:   利用Murano部署Kubernetes集群   配置Openstack的安全性使Kubernetes集群可以在Openstack使用   下载并配置kubernetes客户端   创建Kubernetes应用程序   在Ku...
 

Openstack上创建并访问Kubernetes集群:

第一部分:创建集群

  在Openstack部署Kubernetes集群运行Nginx容器的步骤,其中包括:

  利用Murano部署Kubernetes集群

  配置Openstack的安全性使Kubernetes集群可以在Openstack使用

  下载并配置kubernetes客户端

  创建Kubernetes应用程序

  在Kubernetes上运行应用程序

  现在让我们开始:

  利用Murano创建Kubernetes集群

  第一步是创建kubernetes集群。有几种方法都可以做到这一点,但是最简单的方式是通过部署Mirantis Openstack平台与Murano组件实现。

  导入Kubernetes集群应用

  第一步在Openstack社区的应用目录中获取Kubernetes集群应用,遵循以下步骤:

  1、登录Horizon,进入Applications->Manage->Packages.

  2、进入社区应用目录并且选择Murano Apps->Kubernetes Cluster获取Kubernetes集群应用,找到应用包本身的URLhttp://storage.apps.openstack.org/apps/com.mirantis.docker.kubernetes.KubernetesCluster.zip.

  3、回到Horizon界面,点击Import Package

  4、在Package Source选择URL并且添加第二步的URL地址然后点击下一步:

  5Murano自动开始下载应用所需的镜像,然后将其标记为为Murano使用;你无需做任何操作只需点击‘Import’后等待。点击Project->Images查看下载中的镜像状态显示为‘保存中’:

  6、一旦他们完成保存,你可以看到镜像状态变为‘Active’:

  接下来,我们将部署包Kubernetes masterminions的环境。

  在Murnao环境下创建Kubernetes

  1、在Horizon界面,选择Applications->Browse.,你可以在Recent Activity下看到新的应用。

  2、为了简化步骤,点击Quick Deploy直接进行快速部署。

  3、选项默认值,点击下一步。

  4、选择Debian镜像点击创建。

  5、自动进入Environment界面,此时应用已经创建但并没有部署:

  6、点击‘Deploy This Environment’,在此过程中进行一系列操作:创建VMs,网络,安全组等。你可以在主环境页面查看日志:

  7、当部署完成后,你可以查看状态变为Ready

  8、那么你从哪里可以访问集群呢?点击‘Latest Deployment Log’查看集群分配的IP地址:

  现在你可以注意到4个不同的节点:网关-1kube-1kube-2kube-3。点击Project->Compute->Instances查看这些实例,Kubernetes API运行在Kube-1上。

  第二部分:访问集群

  为了访问在第一部分创建的kubernetes集群,我们先创建Ubuntu VM(如果已经有Ubuntu机器可以忽略)然后进行配置来访问刚刚部署的Kubernetes API

  创建客户端VM

  1. 点击Project->Compute->Intances->Launch Instance创建新的VM:

  2. 你无须担心获取镜像,因为你已经有了Ubuntu Kubernetes镜像作为Murano应用的一部分下载完成了。点击‘+’选择。(你也可以选择其他的发行版)

  3. 你需要为Ubuntu镜像选择足够大的云主机类型,所以至少选择m1.small云主机类型:

  4. 网络可以选择集群已有的网络,但是没有关系,我们都是利用浮动IP,只要确保它在网络上。

  5. 接下来确保你有密钥对,因为我们需要它来登录机器:

  6. 创建完成

  7. 点击实例的下拉按钮选择绑定浮动IP,如果没有分配的浮动IP地址,点击‘+’分配一个新的浮动IP地址:

  8. 选择合适的网络并且点击分配IP

  9. 将浮动IP绑定到VM上:

  10. 你将看到实例上列出的新的浮动IP

  11. 在登录之前,需要确保安全组允许SSH访问,点击Project->Compute->Access & Security选择默认安全组的管理规则菜单:

  12. 点击+添加规则:

  13. Rule向导中选择SSH并点击Add

  14. 在管理规则页面会看到添加的新的规则:

  15. 现在使用SSH客户端通过设定的用户名和私钥访问创建的VM

  现在你可以在集群中部署容器了。

  第三部分:运行应用

  在第二部分,你已经创建的集群,那么最后你可以准备与Kubernetes API实现交互,一般过程如下:

  为访问你的应用定义安全的身份认证

  在集群中部署容器化应用

  将应用暴露到外部环境提供访问

   现在让我们来看看是如何操作。

  为你的Kubernetes应用定义安全参数

  你需要了解的第一件事是,我们有一组机器与Kubernetes API绑在一起,它可以支持多种环境,每个都有自己的安全凭证。

  例如,如果你要创建依赖于特定认证授权的应用程序,我也可以创建依赖于另一个认证授权的应用,我们可以各自控制自己的应用,但是不能看到对方的应用。

  1.首先我们需要创建一个新的认证凭证用来签发其他的证书。采用以下命令创建:

  $ sudo openssl genrsa -out ca-key.pem 2048

  $ sudo openssl req -x509 -new -nodes -key ca-key.pem -days 10000 \

  -out ca.pem -subj "/CN=kube-ca"

  2. 这时你应该有两个文件:ca-key.pemca.pem,你可以用他们来创建集群管理员密钥对。为此,你将创建私钥(admin-key.pem),之后创建一个认证签名请求(admin.csr),然后签名以创建公钥(admin.pem)

  $ sudo openssl genrsa -out admin-key.pem 2048

  $ sudo openssl req -new -key admin-key.pem -out admin.csr -subj "/CN=kube-admin"

  $ sudo openssl x509 -req -in admin.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial \

  -out admin.pem -days 365

  现在你有了这些文件,就可以利用他们来配置kubernetes客户端。

  下载并配置Kubernetes客户端

  1. 在机器上开始下载kubectl客户端,此场景我们采用Linux,根据你的OS选择合适的方式。

  $ curl -O \ https://storage.googleapis.com/kubernetes-release/release/v1.4.3/bin/linux/amd64/kubectl

  2. 设置kubectl为可执行:

  $ chmod +x kubectl

  3. 将它移到本地目录:

  $ sudo mv kubectl /usr/local/bin/kubectl

  4. 现在开始设置默认集群,你需要使用从环境部署的日志中获取的URL,此外确保你提供ca.pem文件的绝对路径。

  $ kubectl config set-cluster default-cluster --server=[KUBERNETES_API_URL] \

  --certificate-authority=[FULL-PATH-TO]/ca.pem

  5. 接下来你需要告知kubectl如何找到认证:

  $ kubectl config set-credentials default-admin \

  --certificate-authority=[FULL-PATH-TO]/ca.pem \

  --client-key=[FULL-PATH-TO]/admin-key.pem \

  --client-certificate=[FULL-PATH-TO]/admin.pem

  6. 现在你需要设置环境让kubectl知道去使用这些认证:

  $ kubectl config set-context default-system --cluster=default-cluster --user=default-admin

  $ kubectl config use-context default-system

  7. 现在你应该能够看见集群信息:

  $ kubectl cluster-info

  Kubernetes master is running at http://172.18.237.137:8080

  To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

  在kubernetes上运行应用

  在kubernetes上运行应用十分简单,涉及容器的启动。我们之后会做详细介绍。

  1.开始创建Nginx web server的部署:

  $ kubectl run my-nginx --image=nginx --replicas=2 --port=80

  deployment "my-nginx" created

  2. 默认容器只有集群的成员可见,为了将服务暴露给外部网络,运行以下命令:

  $ kubectl expose deployment my-nginx --target-port=80 --type=NodePort

  service "my-nginx" exposed

  3. 我们使用了NodePort类型,这意味着外部IP是正在运行的节点IP,你可以查看是否获取了服务列表:

  $kubectl get services

  NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE

  kubernetes 11.1.0.1 443/TCP 3d

  my-nginx 11.1.116.61 80/TCP 18s

  4. 这里引用的节点是kube-2kube-3(Kube-1API服务器),我们可以从实例页面获取它们的IP地址:

  5. 但是服务列表中并没有告诉我们实际的端口数,为了获取实际端口数,可以运行以下命令:

  $ kubectl describe services my-nginx

  Name: my-nginx

  Namespace: default

  Labels: run=my-nginx

  Selector: run=my-nginx

  Type: NodePort

  IP: 11.1.116.61

  Port: 80/TCP

  NodePort: 32386/TCP

  Endpoints: 10.200.41.2:80,10.200.9.2:80

  Session Affinity: None

  No events.

  6. 这样服务在端口32386可用,但是如果你尝试访问它会发现失败:

  $ curl http://172.18.237.138:32386

  curl: (7) Failed to connect to 172.18.237.138 port 32386: Connection timed out

  7. 默认情况下会出现上述问题,因为这个端口被默认的安全组关闭,为了解决这个问题,需要创建新的安全组适用于kubernetes节点,点击Project->Compute->Access& Security->+Create Security Group

  8. 定义组名称点击‘创建安全组’。

  9. 点击步骤8创建的安全组的‘管理规则’:

10. 点击‘+Add Rule’:

11. 此例中我们自定义TCP规则运行在端口32386(或者kubernetesNodePort中分配的端口)的入口流量,你可以定义仅从特定的IP地址访问,点击‘Add’完成规则的添加。

  12. 现在你可以将上述步骤设定的安全组添加到kubernetes集群中作为工作节点的实例中(kube-2kube-3节点),点击每个实例行末的小三角选择‘编辑安全组’。

  13. 在左边面板可以看到之前创建新的安全组;点击‘+’将它添加到实例中:

  14. 点击‘保存’。

  15. 为集群的所有工作节点添加安全组。

$ curl http://172.18.237.138:32386

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.For online documentation and support please refer to nginx.org.

Commercial support is available at nginx.com.Thank you for using nginx.

  16. 现在你可以重新尝试访问。

  现在你可以访问部署在Kubernetes集群的Nginx容器。

 

更多推荐:Openstack培训  Openstack 认证  Openstack开发培训  红帽OpenStack培训    数据挖掘培训  SPSS Modeler培训

 

上一篇:OpenStack私有云:好处、挑战和未来
下一篇:思科公司关闭基于OpenStack的公共云
文章摘要: 思科公司关闭基于OpenStack的公共云,思科公司宣布将于2017年3月正式停止其IntercloudServices公共云基础设施服务。 思科公司的公有云基础设施基于OpenStack的开源软件。该公司表示,它将Intercloud工作负载移动到其他基础设施。 思科云平台和服务副总裁KipCompton在一份声明中写道,这种改变只是一种战略转变,思科公司决定采用“企业混合云和SP网络功能虚拟化”。 思科在2014年推出了Intercloud,并将其推广为企业将...

相关资讯

◆EasyStack郭长波当选OpenStack基金董事 ◆OpenStack私有云:好处、挑战和未来 ◆在Openstack上创建并访问Kubernetes集群 ◆思科公司关闭基于OpenStack的公共云 ◆2017年OpenStack管理员认证会不会火? ◆微软将在Office中引入人工智能 ◆微软发Surface Pro 4/Studio固件更新日志 ◆微软:AI人工智能应该帮助,而不是替代人 ◆微软推出WDATP强化企业终端威胁防护 ◆Windows申请免费SSL证书-Let's Encrypt ◆思科ASAP助力全数字化时代数据中心创新 ◆怎样选择合适的PoE交换机? ◆思科持续保持企业基础设施市场优势 ◆网络工程师需要的8项技能 ◆思科IOS中改善CLI的用户体验 ◆H3C交换机以太网端口类型 ◆H3C交换机做DHCP ◆H3C交换机常用配置命令 ◆新华三集团总裁兼首席执行官于英涛2017年会致辞 ◆新华三加速云落地 ◆RHEL7 配置VNC远程桌面 ◆RHEL7利用iso镜像制作本地yum源 ◆RHEL6 学习笔记 ◆RedHat5和RedHat6 配置yum源详解 ◆RedHat7上为Nginx编译安装nginx_push_stream_module ◆是否有必要参加PMP考试培训 ◆该怎么选择PMP培训公司 ◆企业为什么需要IT配置管理及其如何使用 ◆PMP考试心得 ◆IT资产管理与ITIL配置管理的区别和联系 ◆Juniper用户快更新:Junos OS、SRX有DoS漏洞 ◆Juniper防火墙之恢复出厂默认设置 ◆Juniper SSG双机高可用(HA)平滑升级经验分享 ◆高盛:Juniper市场表现将超过Cisco和Arista ◆Juniper收购云管理公司AppFormix ◆F5 Network:让爱点亮世界 ◆F5发布2017年应用交付状态报告 ◆除F5外,其他负载均衡软件的优缺点 ◆负载均衡的那些算法们 ◆F5配置手册:设备初始化配置 ◆Oracle培训:Oracle数据泵导入dmp文件 ◆Oracle培训:Oracle手工建库出现ORA-01519错误 ◆Oracle培训:Oracle CDC部署 ◆Oracle培训:Oracle 12c创建可插拔数据库(PDB)及用户 ◆Oracle EXP和IMP使用方法介绍 ◆VMware中CentOS 6.6的kdump启动失败解决 ◆VMware NSX升级:微细分、安全启动和支持非vSphere环境 ◆VMware虚拟化培训:虚拟化的基础知识 ◆VMware发布2016数字化工作空间现状报告 ◆VMware助力广州科政实现恒大集团打造全虚拟化数据中心 ◆戴尔EMC补丁在VMAX存储系统中出现漏洞 ◆EMC进行SAN拆分,解决更细化的存储需求 ◆EMC数据中心全闪存年,机架级闪存可让Hadoop提速10倍 ◆EMC发布2016年新品和技术路线 ◆重新定义企业IT,EMC联手VMware推超融合 ◆最近面试的大数据岗位的公司经历 ◆用大数据预测雾霾,已获得环保部订单的微软是如何做到的? ◆大数据学习经验 ◆身处大数据时代,大数据这些误区你知道吗 ◆大数据分析促进人才招聘 ◆云计算SaaS采用要考虑的5大因素 ◆如何构建一个私有存储云 ◆云计算的三大支柱 ◆云计算的真正价值不仅仅是节省开支 ◆云计算将改变我们的生活? ◆Apache Spark也有不完美 ◆Spark将机器学习与GPU加速机制纳入自身 ◆spark作业调优 ◆Spark基本工作流程及YARN cluster模式原理 ◆从Spark 2.0版的推出,看开源大数据技术的商业化发展 ◆EasyStack郭长波当选OpenStack基金董事 ◆OpenStack私有云:好处、挑战和未来 ◆在Openstack上创建并访问Kubernetes集群 ◆思科公司关闭基于OpenStack的公共云 ◆2017年OpenStack管理员认证会不会火? ◆IBM和Bell联手共同打造苹果iOS企业应用 ◆IBM首席执行官提出人工智能部署三大基本原则 ◆调研IBM与西门子:软件将是工业的未来! ◆IBM在美获专利最多 ◆IBM闪存迎接新挑战 ◆Hadoop创始人Doug Cutting寄语2017:五种让开源项目成功的方法 ◆基于Ubuntu Hadoop的群集搭建Hive ◆HDFS以及HBase动态增加和删除节点 ◆Cloudera提供课程帮助缩小数据技能差距 ◆Cloudera提供课程帮助缩小数据技能差距 ◆扩大与Azure合作,思杰力推超融合基础设施上部署VDI ◆MapReduce工作流多种实现方式 ◆Citrix虚拟化技术:XenServer6.2资源池配置 ◆Citrix虚拟化技术:XenServer6.2虚拟机创建 ◆Citrix虚拟化技术:XenServer6.2存储管理 ◆2017年十大最热IT技能:安全位列其中 ◆筑牢个人信息安全防火墙 ◆2016年最热门的六大IT职位 ◆CISP认证和CISSP认证区别 ◆成为CISSP的理由