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配置,其中存在关于主配置和节点配置的完整主机配置和变量定义.这包含有关配置的所有详细信息.

一旦我们完成设置并且playbook准备就绪,我们就可以运行以下命令来设置集群.

$ ansible-playbook -i inventry/hosts~/openshift-ansible/playbooks/byo/config.yml


将主机添加到群集

我们可以使用 :

  • 将主机添加到群集b

  • 快速安装工具

  • 高级配置方法

快速安装工具适用于交互式和非交互式模式.使用以下命令.

$ 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日志等开始.容器日志管理有多种技术和应用程序.

很少有列出的工具可用于日志管理.

  • 流利

  • ELK

  • Kabna

  • Nagios

  • Splunk

ELK堆栈 : 尝试从所有节点收集日志并以系统格式显示时,此堆栈非常有用. ELK堆栈主要分为三大类.

ElasticSearch : 主要负责从所有集装箱收集信息并将其放入中央位置.

流利 : 用于将收集的日志提供给elasticsearch容器引擎.

Kibana : 用于在图形界面中将收集的数据显示为有用信息的图形界面.

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

日志诊断

OpenShift有一个内置的 oc adm dignostics 命令,可以用来分析多种错误情况.可以从master作为集群管理员使用此工具.此实用程序非常有用,可以排除故障并确定已知问题.它在主客户端和节点上运行.

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

  • AggregatedLogging

  • AnalyzeLogs

  • ClusterRegistry

  • ClusterRoleBindings

  • ClusterRoles

  • ClusterRouter

  • ConfigContexts

  • DiagnosticPod

  • MasterConfigCheck

  • MasterNode

  • MetricsApiProxy

  • NetworkCheck

  • NodeConfigCheck

  • NodeDefinitions

  • ServiceExternalIPs

  • UnitStatus

可以使用以下命令运行它们.

$ oc adm diagnostics< DiagnosticName>


升级群集

群集的升级涉及升级群集中的多个内容并使用new更新群集的基础组件和upgrdes.这涉及 :

  • 主组件的升级

  • 节点组件的升级

  • 政策升级

  • 路线升级

  • 图像流升级

为了执行所有这些升级,我们需要先安装快速安装程序或工具.为此,我们需要更新以下实用程序 :

  • atomic-openshift-utils

  • atomic-openshift-excluder

  • atomic-openshift-docker-excluder

  • etcd package

在开始升级之前,我们需要在主机上备份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步 : 在所有主人身上升级等.

$ 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 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执行器以在节点上返回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