OpenShift - 集群



OpenShift 使用两种安装方法来设置 OpenShift 集群。

  • 快速安装方法
  • 高级配置方法

设置集群

快速安装方法

此方法用于运行快速无人值守的集群设置配置。要使用此方法,我们需要首先安装安装程序。这可以通过运行以下命令来完成。

交互式方法

$ atomic-openshift-installer install

当用户希望运行交互式设置时,此方法非常有用。

无人值守安装方法

当用户希望设置无人值守的安装方法时,可以使用此方法,用户可以在~/.config/openshift/下定义一个配置文件 yaml 文件,并将其命名为 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 hosts 文件中,添加关于新节点的变量详细信息,如下所示。

[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
  • Kabana
  • Nagios
  • Splunk

ELK 堆栈 - 此堆栈在尝试从所有节点收集日志并以系统化格式呈现它们时非常有用。ELK 堆栈主要分为三大类。

ElasticSearch - 主要负责从所有容器收集信息并将其放入中心位置。

Fluentd - 用于将收集的日志馈送到 Elasticsearch 容器引擎。

Kibana - 用于将收集的数据作为有用的信息以图形界面的形式呈现的图形界面。

需要注意的是,当此系统部署在集群上时,它会开始从所有节点收集日志。

日志诊断

OpenShift 具有一个内置的oc adm diagnostics命令,可用于分析多种错误情况。集群管理员可以从主节点使用此工具。此实用程序在故障排除和诊断已知问题方面非常有用。它在主客户端和节点上运行。

如果没有任何参数或标志运行,它将查找客户端、服务器和节点机器的配置文件,并将其用于诊断。可以通过传递以下参数来单独运行诊断:

  • 聚合日志记录
  • 分析日志
  • 集群注册表
  • 集群角色绑定
  • 集群角色
  • 集群路由器
  • 配置上下文
  • 诊断 Pod
  • 主节点配置检查
  • 主节点
  • 指标 API 代理
  • 网络检查
  • 节点配置检查
  • 节点定义
  • 服务外部 IP
  • 单元状态

可以使用以下命令简单地运行它们。

$ 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 主节点中,我们通过更新 etcd 文件然后转向 Docker 来启动升级。最后,我们运行自动化执行器以将集群置于所需位置。但是,在开始升级之前,我们需要首先在每个主节点上激活 atomic 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 - 从您希望执行升级的所有节点中删除所有 atomic OpenShift 包。

$ atomic-openshift-excluder unexclude

步骤 2 - 接下来,在升级前禁用节点调度。

$ oadm manage-node <node name> --schedulable = false

步骤 3 - 将所有节点从当前主机复制到其他主机。

$ oadm drain <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 executer 将 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
广告