kubernetes升级说明以及各个组件启动参数变动

kubernetes 使用二进制文件安装:安装参考

双Master,我们使用haproxy 做双机负载均衡: 参考 kubernetes high-availability

一、1.6 升级到 1.7 :

1.7 更新说明以及二进制文件下载:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.7.md

1.7 各个组件的启动配置文件参考:https://github.io/.....

各个组件的启动参数可以不变。


二、1.7 升级到 1.8 :

1.8 更新说明以及二进制文件下载:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.8.md

1.8 各个组件的启动配置文件参考:https://github.io/.....

1.kubelet的启动参数中,--require-kubeconfig已经不用了,如果配置了会在日志中看到警告。并且,--experimental-bootstrap-kubeconfig已经去掉了experimental-这个单词。


2.新版本的kubelet启动时会严格判断swap是否开启,如果开启会报错,使用sfdisk -l查看一下哪个区分是swap分区,使用swapoff /dev/xvda2这样的命令把它关闭,或者直接swapoff
使用free -m确认swap已经关闭。
如果你有其他原因需要开swap,可以通过kubelet的启动参数 --fail-swap-on=false

3.在1.8.4增加了Node Authorization机制,需要在apiserver中的配置文件中--authorization-mode=增加一个Node值,并在--admission-control=...,增加一个NodeRestriction,..不然会报错。并删除 system:node cluster role binding 

  --admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,NodeRestriction \
  --authorization-mode=Node,RBAC

(或者你可以不加这个Node Authorization机制,这样会导致节点使用kubelet-bootstrap注册不成功,会出现权限问题。)

4. 注意:替换kubelet二进制文件,会导致所有容器重启。

5. 配置文件:https://github.com/4220182/kubernetes/tree/master/k8s/1.8.10

三、1.8 升级到 1.9 :

1.9 更新说明以及二进制文件下载:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.9.md

1.9 各个组件的启动配置文件参考:https://github.io/.....

1. kube-apiserver 中的 --experimental-bootstrap-token-auth 改为:--enable-bootstrap-token-auth

2. HA 方面改进非常大:kube-apiserver 中增加 --endpoint-reconciler-type=lease

   在1.9以前,如果我们有两台kube-apiserver通常我们设置 --apiserver-count=1 ,这样当一台kube-apiserver挂掉,触发自动更新 ep/kubernetes 的节点IP,但是,当两台kube-apiserver同时存活的时候,就会导致频繁更新ep/kubernetes 如:

1.8以及1.8以前的版本,当两台kube-apiserver同时存活时
以及--apiserver-count=1
[root@master-host0 ~]# kubectl get ep kubernetes
NAME         ENDPOINTS         AGE
kubernetes   192.168.5.7:443   183d
[root@master-host0 ~]# kubectl get ep kubernetes
NAME         ENDPOINTS         AGE
kubernetes   192.168.5.6:443   183d
可以看到endpoints在两台apiserver中不断来回切换。

在1.9 以后,增加 --endpoint-reconciler-type=lease 它使用了一个被每个 apiserver 副本定期更新的租约。当副本宕机时,它会停止更新自己的租约,其他副本注意到这个租约过期并从 endpoint 列表中将其删除:

1.9+版本,两台kube-apiserver存活的时候,
以及设置了 --endpoint-reconciler-type=lease
[root@master-host0 ~]# kubectl get ep kubernetes
NAME         ENDPOINTS                         AGE
kubernetes   192.168.5.6:443,192.168.5.7:443   183d

当一台kube-apisever挂掉:
[root@master-host0 ~]# kubectl get ep kubernetes
NAME         ENDPOINTS         AGE
kubernetes   192.168.5.7:443   183d

ha详细参考: https://k8smeetup.github.io/docs/admin/high-availability/

配置文件:https://github.com/4220182/kubernetes/tree/master/k8s/1.9.8

参考:

各个组件的完整启动参数: https://kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/

中文参考:https://kubernetes.io/cn/docs/admin/kube-apiserver/

你可能感兴趣的:(kubernetes)