




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文件状态:【】 草稿【 】 正式发布【】 正在修改中类 别云计算项目名称Kubernetes研究版 本日期作者备注说明1.02016/03/28程成初稿审 核密 级秘密应用范围陕西省信息化工程研究院软件研发部版权所有陕西省信息化工程研究院Kubernetes研究目录KUBERNETES研究11.Kubernetes架构41.1.操作对象41.2.功能组件52.Kubernetes部署62.1.源码安装62.2.编译好的安装包72.3.获取pause镜像83.kubernester-UI部署93.1.获取UI镜像93.2.部署kubernester-UI93.3.FAQ104.kube-dashboard部署114.1.获取UI镜像114.2.部署kube-dashboard114.3.FAQ135.docker Registry私有仓库135.1.搭建私有仓库135.2.使用私有仓库146.kubenetes中常见问题156.1.kubernetes常用命令156.2.kubernetes resfulAPI167.参考文献171. Kubernetes架构Kubernetes是Google开源的容器集群管理系统。它构建于docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。本文旨在梳理Kubernetes的架构、概念及基本工作流,并且通过运行一个简单的示例应用来介绍如何使用Kubernetes。1.1. 操作对象Kubernetes以RESTFul形式开放接口,用户可操作的REST对象有三个:pod:是Kubernetes最基本的部署调度单元,可以包含container,逻辑上表示某种应用的一个实例。比如一个web站点应用由前端、后端及数据库构建而成,这三个组件将运行在各自的容器中,那么我们可以创建包含三个container的pod。service:是pod的路由代理抽象,用于解决pod之间的服务发现问题。因为pod的运行状态可动态变化(比如切换机器了、缩容过程中被终止了等),所以访问端不能以写死IP的方式去访问该pod提供的服务。service的引入旨在保证pod的动态变化对访问端透明,访问端只需要知道service的地址,由service来提供代理。replicationController:是pod的复制抽象,用于解决pod的扩容缩容问题。通常,分布式应用为了性能或高可用性的考虑,需要复制多份资源,并且根据负载情况动态伸缩。通过replicationController,可以指定一个应用需要几份复制,Kubernetes将为每份复制创建一个pod,并且保证实际运行pod数量总是与该复制数量相等(例如,当前某个pod宕机时,自动创建新的pod来替换)。1.2. 功能组件master运行三个组件:l apiserver:作为kubernetes系统的入口,封装了核心对象的增删改查操作,以RESTFul接口方式提供给外部客户和内部组件调用。它维护的REST对象将持久化到etcd(一个分布式强一致性的key/value存储)。l scheduler:负责集群的资源调度,为新建的pod分配机器。这部分工作分出来变成一个组件,意味着可以很方便地替换成其他的调度器。l controller-manager:负责执行各种控制器,目前有两类:endpoint-controller:定期关联service和pod(关联信息由endpoint对象维护),保证service到pod的映射总是最新的。replication-controller:定期关联replicationController和pod,保证replicationController定义的复制数量与实际运行pod的数量总是一致的。slave(称作minion)运行两个组件:l kubelet:负责管控docker容器,如启动/停止、监控运行状态等。它会定期从etcd获取分配到本机的pod,并根据pod信息启动或停止相应的容器。同时,它也会接收apiserver的HTTP请求,汇报pod的运行状态。l proxy:负责为pod提供代理。它会定期从etcd获取所有的service,并根据service信息创建代理。当某个客户pod要访问其他pod时,访问请求会经过本机proxy做转2. Kubernetes部署2.1. 源码安装l 安装docker:add-apt-repository ppa:docker-maint/testingapt-get updatewget /sh index.htmll 安装golang:add-apt-repository ppa:gophers/goapt-get updateapt-get isntall golang通过dpkg -L golang查看其安装位置l kubernetes源码安装cd kuberneteshack/local-up-cluster.sh./cluster/kubectl.sh get services2.2. 编译好的安装包手动执行以下命令:./etcd./kube-apiserver -etcd-servers=:4001 -insecure-bind-address= -service-cluster-ip-range=/24 -insecure-port=8080 ./kube-scheduler -master=:8080./kube-controller-manager -master=:8080 -address=./kube-proxy -master=:8080./kubelet -logtostderr=true -api_servers=:80802.3. 获取pause镜像Kubnetes在创造pod或replicationController时,需要基于pause镜像的底层容器,默认会到谷歌的kubernetes的官方仓库下载,往往出现超时错误,因此需要用下面的方法获取pause镜像方法一:docker pull docker.io/kubernetes/pausedocker tag docker.io/kubernetes/pause gcr.io/google_containers/pause:2.0方法二:kubelet的启动参数里面指定:-pod-infra-container-image=gcr.io/google_containers/pause:2.0方法三:可在配置文件中将仓库改为私有仓库,在kubelet配置文件中指定。KUBELET_OPTS=-address= -port=10250 -pod-infra-container-image=docker3:5000/pause:latest -hostname_override=docker3 -api_servers=http:/docker3:8080-logtostderr=true -cluster_dns=0-cluster_domain=cluster.local3. kubernester-UI部署3.1. 获取UI镜像由于谷歌的官方仓库gcr.io/google_containers/无法访问,本文将获取国内提供的kubernetes-UI镜像/googlecontainer/kube-ui:v5。docker pull /googlecontainer/kube-ui:v53.2. 部署kubernester-UI(1) 创建Namespace:kube-system执行命令:kubectl create -f namespace.yamlapiVersion: v1 kind: Namespace metadata: name: kube-system(2) 创建rc:kube-ui-v5,(注意image键值改为本地的的kube-ui镜像)执行命令:kubectl create -f kube-ui-rc.yaml查看创建完成的pod(因设定了空间,查询时也要加上namespace,否则无法显示):kubectl get pod -namespace=kube-system(3) 创建service:kube-ui执行命令:kubectl create -f kube-ui-svc.yaml(4) 部署完成后,可在minion节点中通过docker ps查看到运行的kube-ui和pause容器。(5) 通过kubectl cluster-info查看kube-ui的运行地址(6) 界面显示59:8080/api/v1/proxy/namespaces/kube-system/services/kube-ui/3.3. FAQ本文在创建过程中采用单节点架构,其中容器都正常运行,但在浏览器上UI不能正常访问。通过netstate nltp查看apiserver的8080端口没有开放。原因在于在启动kube-apiserve时指定-insecure-bind-address=重新启动kube-apiserve后端口8080被释放。4. kube-dashboard部署4.1. 获取UI镜像同样谷歌的官方仓库gcr.io/google_containers/无法访问。本文将获取国内提供的kubernetes-dashboard镜像brainqi/kubernetes-dashboard-amd64:v1.0.0。docker pull brainqi/kubernetes-dashboard-amd64:v1.0.0docker tag brainqi/kubernetes-dashboard-amd64:v1.0.0 gcr.io/google_containers/kubernetes-dashboard-amd64:v1.0.04.2. 部署kube-dashboard(1) 在kube的addons文件夹中包含创建kube-dashboard的service和ReplicationController文件。cd /root/kubernetes/cluster/addons/dashboardkubectl create -f namespace.yaml (在创建kube-ui时执行过,不用执行)cat namespace.yamlapiVersion: v1kind: Namespacemetadata: name: kube-systemkubectl create -f dashboard-controller.yaml -namespace=kube-systemkubectl create -f dashboard-service.yaml -namespace=kube-systemkubectl proxy -port=9090 -address= &(2) 查看创建好的services和ReplicationController。kubectl get services -namespace=kube-systemkubectl get ReplicationController -namespace=kube-systemkubectl describe service kubernetes-dashboard -namespace=kube-system kubectl describe ReplicationController kube-ui-v5-1 -namespace=kube-system查看kube-dashboard可访问地址:kubectl cluster-info(3) 界面显示4.3. FAQ同样在部署过程中遇到kube-dashboard无法访问的问题,出现500错误。其原因在于创建kube-dashboard ReplicationController(rc)没有指定api-server地址。添加args,值为-apiserver-host=59:8080。重新创建rc和svc后,成功访问。5. docker Registry私有仓库5.1. 搭建私有仓库Docker将私有仓库的运行封装为registry容器,本文在42上运行docker registry。sudo docker pull registry:2.2 #获取镜像docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 -restart=always -name registry registry:2.2 #生成registry容器验证是否成功:42:5000/v242:5000/v2/_catalog5.2. 使用私有仓库成功搭建好私有仓库后,本节镜像私有仓库中镜像的上传和下载。本文将在59节点上将ubuntu镜像上传道私有仓库42中,之后在60节点从私有仓库中获取ubuntu镜像。(1)(59上操作)首先用docker tag将59节点上的镜像Ubuntu打上标签,注意要注明版本号。docker tag ubuntu:14.04 42:5000/ ubuntu:14.04(2)将ubuntu:14.04镜像上传到42节点上。docker push 42:5000/ubuntu:14.04上传完成后可在42的/opt/data/registry/images目录下查看(3)在60上获取ubuntu:14.04镜像docker pull 42:5000/ubuntu:14.045.3. 容器生成镜像Docker提供将运行的容器提交生成新镜像的方法,即docker commit debian02 #把这个容器提交生成新的debian02镜像(该镜像是原始镜像与容器的整合)将镜像直接保存为tar格式便于转存的启动节点中。docker save debian02 /root/debian02.tar #debian02镜像打包在另外的机器上导入镜像docker load debian02.tar #导入镜像6. kubenetes中常见问题6.1. kubernetes常用命令kubectl get minions查看minion主机kubectl get pods查看pods清单kubectl get services -o json查看service清单kubectl get replicationControllers查看replicationControllers清单kubectl describe pods apache描述pods信息kubectl proxy -port=9090 -address= &后台释放9090端口kubectl cluster-infokubectl get namespacekubectl delete pod redis-masterfor i in kubectl get pod|tail -n +2|awk print $1; do kubectl delete pod $i;done#删除所有pods描述pods信息:kubectl describe pods apache-test-3253166744-em9rz6.2. kubernetes resfulAPI Kubernetes提供的RESTful API(推荐,及时性更高)。官方API http:/kubernetes.io/docs/api-reference/v1/operations/。可通过火狐浏览器restclien工具验证:#查看kubernetes版本curl -s -L 00:8080/api/v1beta1/version | python -mjson.tool #查看pods清单curl -s -L 00:8080/api/v1beta1/pods | python -mjson.tool #查看replicationControllers清单curl -s -L 00:8080/api/v1beta1/replicationControllers | python -mjson.tool #查查看minion主机# curl -s -L 00:8080/api/v1beta1/minions | python -m json.tool #查看service清单# curl -s -L 00:8080/api/v1beta1/services | python -m json.tool 7. 参考文献(1) Ustack贡献的方案:/blog/kubernetes1/?belong=news(2) 梁工使用方案/a/1190000002620961/7876557/1736572(3) Kubernetes应用部署模型解析(部署篇)/article/2015-06-12/2824937(4) 官网:http:/kubernetes.io/docs/getting-started-guides/locally/(5) APIhttp:/kubernetes.io/docs/api-reference/v1/operations/(6) Kubernetes dashboard官网/kubernetes/dashboardhttp:/kubernetes.io/docs/user-guide/ui/(7) 下载/kubernetes/kubernetes/releases/(8) kubernetes初探/xiangpingli/article/details/48338029http:/kubernetes.io/docs/api-reference/v1/operations/(9) ubuntu安装单机版kubernetes/zhang_jiayu/article/details/42745507#reply(10) kubernetes集群中部署kube-ui/zczzsq/article/details/50787810http:/dockone.io/article/623?utm_source=tuicool&utm_medium=referral(11) docker详细的基础用法/lib/view/open1410568733492.html/Linux/2015-09/123112.htm(12) 管理工具 shipyard 的详细使用指南/yjs/1012101.html/a/1190000002464365#articleHeader0(13) docker
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 速卖通培训课件
- 数学逻辑思维训练:《统计与概率》教案
- 2025-2030年电力行业储能电池技术创新与应用报告
- 婚庆花艺培训课件
- 住宅石材养护培训课件
- 诗歌比较阅读课件
- 饭店餐厅管理培训课件
- 美学原理形考试题及答案
- 行业顾问合同(标准版)
- 电柜维修培训课件
- 铁路专项病害课件
- 开学安全教育课件
- 2025年学历类自考专业(学前教育)学前儿童发展-学前教育原理参考题库含答案解析(5套)
- 2025-2026学年人教版(2024)初中化学九年级上册教学计划及进度表
- 小学语文人教二年级上册 我最喜爱的玩具
- 2021年成都中医药大学辅导员招聘笔试试题及答案解析
- 经营者身份证明书
- 高中英语3500词汇表
- 《绣球》课件
- 遥感图像的目视判读
- 轧制原理-PPT课件
评论
0/150
提交评论