0.prerequisite

 1.下载文件:

     从Kubernetes的github上下载最新的发布版    :https://github.com/kubernetes/kubernetes/releases

2.测试环境文件发布包地址(112.74.163.191)

   Kubernetes1.4.3 release :    /data01/naturecloud/k8s

   Kubernetes1.3.4 release  :      //backup/20161018/binary  (只含部分二进制文件:kube-apiserver  kubectl  kubelet etc.)

3.解压kubernetes.tar.gz

   得到k8s的发布版,里面包含了源代码,各种平台的发布包等,相见目录kubernetes/ 

4. 进入kubernetes/server目录选择 kubernetes-server-linux-amd64.tar.gz

   解压后,进入目录/server/bin ,所有二进制文件就在这个目录下了(kubelet、kubectl etc.)

5、需要为每个kubelet设置配置文件 一个manifests监视目录:(kubelet 默认配置文件地址 /etc/default/kubelet)

--config=/etc/kubernetes/manifests


1.Kubernetes部署方式

通过封装kubelet为upstart服务,直接通过upstart启动kubelet。kubelet定时扫描/etc/kubernetes/manifests下master.json 和minion.json

这两个json文件为Kubernetesmaster和node节点需要的所有服务,通过container的形式启动,包括api-server,scheduler,controller-manager,proxy等。

详细:https://my.oschina.net/caicloud/blog/702855


2.一般升级步骤
  •    替换master.json 和minion.json文件中的hyperkube版本信息
  •    等待kubelet自动升级hyperkube
  •    停止kubelet
  •    替换kubelet
  •    重启kubelet

kubelet启动日志:                /var/log/upstart/kubelet.log   

kubelet配置文件:                /etc/default/kublet

kubernetes配置文件目录:   /etc/kubernetes/manifests


3.通过升级脚本升级

脚本位置:  共享文件 kubeletUpdater.tar

使用方法:

  •   确保发布机器是master机器
  •   确保发布机器可以免密码ssh登录到其他机器(方便scp,不然每次scp都会需要输入密码)
  • 【注意】根据具体环境,更改upgrade.sh文件中几个变量的值(如果与默认值相同则不需更改,默认值为测试环境中相应配置路径)
  •          clusterips(节点ip)、
  •          kubebinarypath(新版本kubelet二进制文件所在目录,用于替换) 
  •          kubeletpath(当前机器以及集群中kubelet文件所在目录,默认值:/opt/bin)
  •          manifest  (配置文件master.json、minion.json所在目录,默认值:/etc/kubernetes/)
  •   运行upgrade.sh {版本号},例如:upgrade.sh 1.4
  •   等待脚本更改hyperkube版本等步骤,脚本的执行步骤如“2.一般升级步骤”所示
  •   验证是否升级成功,验证方式如下所示

4.验证升级是否成功
  •    验证apiserver 是否是最新版本:    kubectl version|grep Server |awk '{print $5}'
  •    验证kubelet是否是最新版本:        kubelet --version
  •    查看kubelet日志是否有问题:           tail -n 10 /var/log/upstart/kubelet.log
  •    查看apiserver 在docker中的日志: docker ps|grep apiserver|awk '{print $1}'|xargs docker logs

5.High Available Cluster 
通过今天kubelet的方式启动多个master ,当某个master故障时候,通过 keepalived 切换master

http://kubernetes.io/docs/admin/high-availability/


Last.Q&A
  1. kubelet启动失败,查看kubelet.log查错。
  2. api-server启动失败,docker ps -a|grep apiserver,docker logs {apiserver_pid},通过docker日志查看apiserver出错信息
  3. 发布文件备份目录: /backup    ,该目录下备份升级前的 manifest文件和kubelet文件,避免升级失败,及时能够回滚。
Logo

开源、云原生的融合云平台

更多推荐