求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 
 

Kubernetes教程
Kubernetes概述
Kubernetes设计架构
kubernetes设计理念
创建Kubernetes集群
基于Docker本地运行Kubernetes
使用Vagrant
本地运行Kubrenetes v1.0
Google Computer Engine入门
AWS EC2快速入门
在Azure上使用CoreOS和Weave的 Kubernetes
从零开始k8s
CoreOS部署Kubernetes集群
CloudStack部署Kubernetes集群
vSphere部署Kubernetes集群
Ferdora部署Kubernetes集群
CentOS部署Kubernetes集群
Ubuntu物理节点上部署Kubernets集群
Mesos部署Kubernetes集群
Kubernetes用户指南:应用程序管理
名词解释 Pods
名词解释 Labels
名词解释:Namespace
名词解释 Replication Controller
名词解释:Node
名词解释:ReplicaSets
名词解释 Services
名词解释 Volumes
名词解释:PV/PVC/StorageClass
名称解释:Deployment
名词解释:Secret
名词解释:StatefulSet
名词解释:DaemonSet
名词解释:Service Account
名词解释:CronJob
名词解释:Job
名词解释:Security Context和PSP
名词解释:Resource Quotas
名词解释:Network Policy
名词解释:Ingress
名词解释:ThirdPartyResources
名词解释:ConfigMap
名词解释:PodPreset
配置Kubernetes
管理应用:部署持续运行的应用
Horizontal Pod Autoscaling
管理应用:连接应用
管理应用: 在生产环境中使用Pods和容器
Kubernetes UI
Kube-API Server
授权插件
认证插件
API Server端口配置
Admission Controller
Service Accounts集群管理指南
使用Kubernetes在云上原生部署cassandra
Spark例子
Storm 示例
示例: 分布式任务队列 Celery, RabbitMQ和Flower
Kubernetes在Hazelcast平台上部署原生云应用
Meteor on Kuberenetes
配置文件使用入门
环境向导示例
在Kubernetes上运行你的第一个容器
kubectl
安装和设置kubectl
kubectl annotate
kubectl api-versions
kubectl apply
kubectl attach
kubectl cluster-info
kubectl config
kubectl config set-cluster
kubectl config set-context
kubectl config set-credentials
kubectl config set
kubectl config unset
kubectl config use-context
kubectl config view
kubectl create
kubectl delete
kubectl describe
kubectl edit
kubectl exec
kubectl logs
kubectl version
故障排查
应用程序相关的故障排查
 
 

Ubuntu物理节点上部署Kubernets集群
 
1202 次浏览
70次  

介绍

这片文档介绍了如何在Ubuntu节点上部署Kubernetes,这里我们用1个主节点和3个普通节点的安装来作为范例。你可以轻松变动设置扩展到任意数量的节点。最初的想法是受到@jainvipin的Ubuntu单节点部署工作的启发。单节点的部署介绍也涵盖在本章节中。

前提条件

所有节点上已经安装docker版本1.2+和用来控制Linux网桥的bridge-utils。

所有的机器可相互通信。主节点需要连接到Interent去下载必须的文件。

本指南介绍的步骤已经在Ubuntu 14.04 LTS 64bit server上测试过了。但在Ubuntu 15不能正常工作,这是因为Ubuntu 15使用systemd代替了upstart。

本指南所依赖于etcd-2.0.12, flannel-0.5.3和k8s-1.0.6。或许能兼容这些软件的较高版本。

所有的服务器能够使用ssh远程密钥认证登入,而不是用密码登入。

开始建立一个集群

建立正确的目录

复制Github上kubernetes的文件库到本地。

$ git clone https://github.com /kubernetes/kubernetes.git

配置和运行Kubernetes集群

启动过程将会首先自动下载所需的二进制安装文件。默认会下载etc版本2.0.12,Flannel版本0.5.3和k8s版本1.0.6。你可以按一下方法来设置参数 ETCD_VERSION , FLANNEL_VERSION 和 KUBE_VERSION ,从而来选定你想要的etc,Flannel和k8s版本。

$ export KUBE_VERSION=1.0.5
$ export FLANNEL_VERSION=0.5.0
$ export ETCD_VERSION=2.2.0

请注意我们在这里使用Flannel是用来建立overlay网络,但这并不是必须的。事实上你可以不借助其他工具直接建立k8s集群,或者使用Flannel,Open vSwitch或SDN来建立网络。

这是一个集群IP地址配置的例子:

首先cluster/ubuntu/config-default.sh文件内配置集群信息。 以下是个简单的参考。

第一个参数 nodes 定义了你所有的节点。主节点列在第一位并使用空格来做分割,比如 <user_1@ip_1> <user_2@ip_2> <user_3@ip_3>

接下来参数 role 按顺序定义了主机的角色,”ai”代表主机可以是主节点或普通节点,”a”代表主节点,”i”代表普通节点。

参数 NUM_MINIONS 定义了所有节点的数量。

参数 SERVICE_CLUSTER_IP_RANGE 定义了Kubernetes服务的IP地址范围。

请确保你所定义的私有IP地址范围是合理的,因为一些IaaS提供商会保留一些私有IP地址。根据RFC1918,一共有三个私有IP地址网段,如下所列。你最好不要选址一个和你自己私有地址网段冲突的网段。

参数 FLANNEL_NET 定义了Flannel网络所用的IP地址范围。这个地址不能和 SERVICE_CLUSTER_IP_RANGE 的地址冲突。

注意: 在部署时,主节点需要连接到Interent去下载必须的文件。如果你的主机在私有网络里,你可以在cluster/ubuntu/config-default.sh中设置参数 PROXY_SETTING 来配置Internet代理。PROXY_SETTING=”http_proxy=http://server:port https_proxy=https://server:port”

当以上所有参数正确设置后,你就可以用 cluster/ 中的命令来启动整个集群了。

$ KUBERNETES_PROVIDER=ubuntu ./kube-up.sh 这个脚本自动 scp 传输二进制安装和配置文件到所有的主机上。之后启动这个主机上的kubernetes的服务。你唯一需要做的是当有提示的时候输入所需密码。

如果一切运行正常,k8s集群启动后你会看见以下提示信息。

测试

你可以运行 kubectl 命令来检测刚升级的Kubernetes集群是否工作正常。 kubectl 运行文件放置在 cluster/ubuntu/binaries 文件夹中。你也可以设置环境变量PATH来调用 kubectl 。

比如,使用 $ kubectl get nodes 来检测你的节点是否正常运行。

$ kubectl get nodes
NAME LABELS STATUS
10.10.103.162 kubernetes.io/hostname=10.10.103.162 Ready
10.10.103.223 kubernetes.io/hostname=10.10.103.223 Ready
10.10.103.250 kubernetes.io/hostname=10.10.103.250 Ready

你也可以使用Kubernetesguest-example来建立Redis后台集群。

部署插件

假设你开始运行k8s集群,这一节将会介绍如何在现有集群上部署类似DNS和UI等插件。

可以 cluster/ubuntu/config-default.sh 中配置在DNS。

参数 DNS_SERVER_IP 定义了DNS的IP,这个IP必须在 SERVICE_CLUSTER_IP_RANGE 的范围中。 参数 DNS_REPLICAS 描述了集群中运行了多少个DNS pod。

默认情况下,我额们也可以配置kube-ui插件。

当以上参数设置完毕之后,运行以下命令。

$ cd cluster/ubuntu
$ KUBERNETES_PROVIDER=ubuntu ./deployAddons.sh

稍等之后,你可以用命令 $ kubectl get pods –namespace=kube-system 来检测这个集群中的DNS和pod的UI是否运行。

下一步

我们目前的工作集中在以下的功能:

1.使用kube-in-docker在Docker中运行kubernetes,从而消除不同操作系统的区别。

2.拆除部署脚本:一键式清除和重建整个部署。

故障排除

通常,这一步非常简单:

1.下载和复制安装和配置文件到在每个节点上。

2.根据用户的输入的IP来配置主节点上的 etcd 。

3.在每个普通节点上新建和启动Flannel网络。

如果你遇到什么问题,首先检查主节点上 etcd 的配置。

1.查看 /var/log/upstart/etcd.log 中的日志。

2.以下命令或许有帮助,第一个是停止这个集群,第二个是启动这个集群。

$ KUBERNETES_PROVIDER=ubuntu ./kube-down.sh

$ KUBERNETES_PROVIDER=ubuntu ./kube-up.sh

3.你也可以在 /etc/default/{component_name} 里做客制化设置,之后用以下命令重启服务 $sudo service {component_name} restart 。

升级集群

如果你已经有了Kubernetes集群并希望升级到新的版本,你需要根据 cluster/ 文件夹中的命令来升级整个或部分集群。

$ KUBERNETES_PROVIDER=ubuntu ./kube-push.sh [-m|-n ]

默认情况下会升级全部的节点,你也可以用 -m 来升级主节点或 -n 来升级某个普通节点。如果没有给出所要升级的版本,这个脚本会尝试使用本地的二进制安装文件。你应该确认所有的文件都在 cluster/ubuntu/binaries 文件夹中准备好了。

用以下命令来获得帮助。

$ KUBERNETES_PROVIDER=ubuntu ./kube-push.sh -h

这里有几个实例:

把主节点升级到版本1.0.5: $ KUBERNETES_PROVIDER=ubuntu ./kube-push.sh -m 1.0.5

把节点10.10.103.223升级到版本1.0.5 : $ KUBERNETES_PROVIDER=ubuntu ./kube-push.sh -n10.10.103.223 1.0.5

把主节点和其他节点升级到版本1.0.5: $ KUBERNETES_PROVIDER=ubuntu ./kube-push.sh1.0.5

这个脚本不会删除你集群上的资源,只是替换了二进制安装包。

测试

你可以运行 kubectl 命令来检测刚升级的Kubernetes集群是否工作正常。 为了确保升级后的集群版本和你期望的一致,以下命令会有所帮助。

升级主节点或所有节点: $ kubectl version 。 检查服务器版本。

升级节点10.10.102.223: $ ssh -t vcap@10.10.102.223 ‘cd /opt/bin && sudo ./kubelet –version’


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



1202 次浏览
70次
 捐助