OpenShift - 集群
OpenShift 使用两种安装方法来设置 OpenShift 集群。
- 快速安装方法
- 高级配置方法
设置集群
快速安装方法
此方法用于运行快速未实现的集群设置配置。为了使用此方法,我们需要先安装安装程序。可以通过运行以下命令来完成此操作。
交互式方法
$ atomic-openshift-installer install
当希望运行交互式设置时,此方法很有用。
无人值守安装方法
当希望设置无人值守的安装方法时,使用此方法,其中用户可以定义配置 yaml 文件并将其放在 ~/.config/openshift/ 下,名称为 installer.cfg.yml。然后,可以运行以下命令来安装 –u 标签。
$ atomic-openshift-installer –u install
默认情况下,它使用位于 ~/.config/openshift/ 下的配置文件。另一方面,Ansible 被用作安装的备份。
version: v2
variant: openshift-enterprise
variant_version: 3.1
ansible_log_path: /tmp/ansible.log
deployment:
ansible_ssh_user: root
hosts:
- ip: 172.10.10.1
hostname: vklnld908.int.example.com
public_ip: 24.222.0.1
public_hostname: master.example.com
roles:
- master
- node
containerized: true
connect_to: 24.222.0.1
- ip: 172.10.10.2
hostname: vklnld1446.int.example.com
public_ip: 24.222.0.2
public_hostname: node1.example.com
roles:
- node
connect_to: 10.0.0.2
- ip: 172.10.10.3
hostname: vklnld1447.int.example.com
public_ip: 10..22.2.3
public_hostname: node2.example.com
roles:
- node
connect_to: 10.0.0.3
roles:
master:
<variable_name1>: "<value1>"
<variable_name2>: "<value2>"
node:
<variable_name1>: "<value1>"
这里,我们有角色特定的变量,如果希望设置某些特定变量,可以定义该变量。
完成后,我们可以使用以下命令验证安装。
$ oc get nodes NAME STATUS AGE master.example.com Ready 10d node1.example.com Ready 10d node2.example.com Ready 10d
高级安装
高级安装完全基于 Ansible 配置,其中存在有关主服务器和节点配置的完整主机配置和变量定义。这包含有关配置的所有详细信息。
一旦我们完成设置并且剧本准备就绪,我们只需运行以下命令即可设置集群。
$ ansible-playbook -i inventry/hosts ~/openshift-ansible/playbooks/byo/config.yml
将主机添加到集群
我们可以使用 − 将主机添加到集群
- 快速安装程序工具
- 高级配置方法
快速安装工具在交互和非交互模式下均可工作。使用以下命令。
$ atomic-openshift-installer -u -c </path/to/file> scaleup
扩展应用程序配置文件的格式可用于添加主节点和节点。
高级配置方法
在此方法中,我们更新 Ansible 的主机文件,然后在此文件中添加新节点或服务器详细信息。配置文件如下所示。
[OSEv3:children] masters nodes new_nodes new_master
在同一个 Ansible 主机文件中,添加有关新节点的变量详细信息,如下所示。
[new_nodes]
vklnld1448.int.example.com openshift_node_labels = "{'region': 'primary', 'zone': 'east'}"
最后,使用更新的主机文件,运行新配置并调用配置文件以使用以下命令完成设置。
$ ansible-playbook -i /inventory/hosts /usr/share/ansible/openshift-ansible/playbooks/test/openshift-node/scaleup.yml
管理集群日志
OpenShift 集群日志不过是从集群的主服务器和节点机器生成的日志。这些可以管理任何类型的日志,从服务器日志、主日志、容器日志、pod 日志等开始。目前有多种用于容器日志管理的技术和应用程序。
下面列出了一些可用于日志管理的工具。
- Fluentd
- ELK
- Kabna
- Nagios
- Splunk
ELK 堆栈 − 此堆栈在尝试从所有节点收集日志并以系统格式呈现时很有用。ELK 堆栈主要分为三大类。
ElasticSearch − 主要负责从所有容器收集信息并将其放到中央位置。
Fluentd − 用于将收集到的日志提供给 elasticsearch 容器引擎。
Kibana − 图形界面,用于将收集的数据作为有用信息呈现在图形界面中。
需要注意的一点是,当此系统部署在集群上时,它会开始从所有节点收集日志。
日志诊断
OpenShift 有一个内置的 oc adm dignostics 命令和 OC,可用于分析多种错误情况。集群管理员可以从主服务器使用此工具。此实用程序在排除故障和诊断已知问题方面非常有用。它在主客户端和节点上运行。
如果在没有任何参数或标志的情况下运行,它将查找客户端、服务器和节点机器的配置文件,并使用它们进行诊断。可以通过传递以下参数单独运行诊断 −
- AggregatedLogging
- AnalyzeLogs
- ClusterRegistry
- ClusterRoleBindings
- ClusterRoles
- ClusterRouter
- ConfigContexts
- DiagnosticPod
- MasterConfigCheck
- MasterNode
- MetricsApiProxy
- NetworkCheck
- NodeConfigCheck
- NodeDefinitions
- ServiceExternalIPs
- UnitStatus
只需使用以下命令即可运行它们。
$ oc adm diagnostics <DiagnosticName>
升级集群
集群升级涉及升级集群内的多个内容,并使用新组件和升级更新集群。这涉及 −
- 主组件升级
- 节点组件升级
- 策略升级
- 路由升级
- 图像流升级
为了执行所有这些升级,我们需要首先获取快速安装程序或实用程序。为此,我们需要更新以下实用程序 −
- atomic-openshift-utils
- atomic-openshift-excluder
- atomic-openshift-docker-excluder
- etcd 包
在开始升级之前,我们需要在主机上备份 etcd,这可以使用以下命令完成。
$ ETCD_DATA_DIR = /var/lib/origin/openshift.local.etcd $ etcdctl backup \ --data-dir $ETCD_DATA_DIR \ --backup-dir $ETCD_DATA_DIR.bak.<date>
主组件升级
在 OpenShift master 中,我们通过更新 etcd 文件开始升级,然后转到 Docker。最后,我们运行自动执行程序以使集群进入所需位置。但是,在开始升级之前,我们需要首先在每个主服务器上激活原子 openshift 包。这可以使用以下命令完成。
步骤 1 − 删除 atomic-openshift 包
$ atomic-openshift-excluder unexclude
步骤 2 − 在所有主服务器上升级 etcd。
$ yum update etcd
步骤 3 −重启 etcd 服务并检查是否启动成功。
$ systemctl restart etcd $ journalctl -r -u etcd
步骤 4 − 升级 Docker 软件包。
$ yum update docker
步骤 5 − 重启 Docker 服务并检查是否正常启动。
$ systemctl restart docker $ journalctl -r -u docker
步骤 6 − 完成后,使用以下命令重启系统。
$ systemctl reboot $ journalctl -r -u docker
步骤 7 −最后,运行 atomic-executer 将软件包重新放入 yum 排除列表中。
$ atomic-openshift-excluder exclude
没有强制升级策略,只有在建议的情况下才需要升级,可以使用以下命令进行检查。
$ oadm policy reconcile-cluster-roles
在大多数情况下,我们不需要更新策略定义。
节点组件的升级
主更新完成后,我们可以开始升级节点。需要记住的一件事是,升级时间应该很短,以避免集群中出现任何问题。
步骤 1 − 从您希望执行升级的所有节点中删除所有原子 OpenShift 包。
$ atomic-openshift-excluder unexclude
步骤 2 − 接下来,在升级之前禁用节点调度。
$ oadm manage-node <node name> --schedulable = false
步骤 3 −将所有节点从当前主机复制到另一台主机。
$ oadm drip <node name> --force --delete-local-data --ignore-daemonsets
步骤 4 − 升级主机上的 Docker 设置。
$ yum update docker
步骤 5 − 重新启动 Docker 服务,然后启动 Docker 服务节点。
$systemctl restart docker $ systemctl restart atomic-openshift-node
步骤 6 −检查两者是否都正确启动。
$ journalctl -r -u atomic-openshift-node
步骤 7 − 升级完成后,重新启动节点机器。
$ systemctl reboot $ journalctl -r -u docker
步骤 8 − 重新启用节点上的调度。
$ oadm manage-node <node> --schedulable.
步骤 9 − 运行 atomic-openshift 执行器以将 OpenShift 包重新放在节点上。
$ atomic-openshift-excluder exclude
第 10 步 −最后,检查所有节点是否可用。
$ oc get nodes NAME STATUS AGE master.example.com Ready 12d node1.example.com Ready 12d node2.example.com Ready 12d

