Openshift集群3-9升级到3-10
更新方法与策略:自动升级方法
下载openshift-ansible的脚本代码
1
2 git clone https://github.com/openshift/openshift-ansible.git
git checkout release-3.10
将master上的/etc/origin/master/htpasswd备份到/root/htpasswd
1 | scp master1:/etc/origin/master/htpasswd /root/htpasswd |
openshift_master_identity_providers中的filename去掉
1 | # /etc/ansible/hosts |
屏蔽掉引入[gluster]导致的一个升级错误
在playbooks/common/openshift-cluster/upgrades/v3_10/upgrade_control_plane.yml
中会去做对glusterfs
与glusterfs_registry
的比较,3.9之前未必需这些host group所以需要在ansible/hosts中需要添加该host group
1 | #/etc/ansible/host |
在ansible/hosts中的nodes列表中添加openshift_node_group_name
1 | ...... |
升级默认的node group configmap
1 | # ansible-playbook -i </path/to/inventory/file> playbooks/openshift-master/openshift_node_group.yml |
检测Python OpenSSL版本
1 | python -c 'import OpenSSL.crypto' |
关闭etcd目录的selinux检查【不建议这么做,建议开启selinux】
关闭任务Check selinux label of ‘‘与Make sure the ‘‘ has the proper label
1 | # roles/etcd/tasks/backup/backup.yml |
升级集群
1 | # ansible-playbook -i </path/to/inventory/file> playbooks/byo/openshift-cluster/upgrades/v3_10/upgrade.yml |
升级过程中可能遇到的问题
webconsole自定义兼容问题
webconsole自定义格式是通过在openshift-web-console项目中的webconsole-config
ConfigMap添加css与js文件路径实现的,3.9版本支持路径不添加引号,而3.10版本必须添加引号。
selinux启动问题
每个节点(包括Master/router/node)都需要开启selinux。
ceph 无法挂载问题
升级过程中,如果有ceph挂载,则会出现超时,升级完成后,自动修复该问题。
HTPasswdPasswordIdentityProvider方式ansible_hosts文件格式更新问题
3.9版本可以将htpasswd文件路径填写在openshift_master_identity_providers变量中,而3.10版本则需要分开写,如下:
1 | openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login':'true','challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}] |
对于router节点添加了独占配置后,ovs服务无法部署问题
版本3.10将组件使用容器的方式部署,如果router节点设置了taints(目的是为了router节点只给route服务,确保应用的性能)那么node,ovs服务将无法在router节点上部署。这时需要给对应deamonset设置tolerations。目前相关的daemonset有:openshift-node/sync
、openshift-sdn/sdn
、openshift-sdn/ovs
。
升级集群时为了尽可能影响线上业务,可以使用分步升级法
所谓分步升级法,就是先升级Master控制节点,再逐个升级计算节点。
- 通过执行upgrade_control_plane.yaml 脚本来升级控制平台节点
1
2
3$ cd /usr/share/ansible/openshift-ansible
$ ansible-playbook -i </path/to/inventory/file> \
playbooks/byo/openshift-cluster/upgrades/v3_11/upgrade_control_plane.yml - 通过执行upgrade_nodes.yaml 脚本来升级计算节点通过-e传入变量的方式来控制升级Node节点的节奏。例如
1
2
3
4$ cd /usr/share/ansible/openshift-ansible
$ ansible-playbook -i </path/to/inventory/file> \
playbooks/byo/openshift-cluster/upgrades/v3_11/upgrade_nodes.yml \
[-e <customized_node_upgrade_variables>]-e openshift_upgrade_nodes_serial="20%"
表示一次只升级20%的节点-e openshift_upgrade_nodes_serial="2" -e openshift_upgrade_nodes_label="region=group1"
表示一次只升级带label为region=group1的节点中的2个。-e openshift_upgrade_nodes_drain_timeout=600
设置openshift_upgrade_nodes_drain_timeout变量以指定将节点标记为失败之前要等待的时间。