002.OpenShift安装部署
一、前置条件说明
1.1 安装准备概述
Red Hat OpenShift 容器平台由 Red Hat 作为 RPM 包和容器镜像组成。 RPM 包是使用订阅管理器从标准 Red Hat 存储库(Yum 存储库)下载的,容器镜像来自 Red Hat 私有存储库。
OpenShift 容器平台安装需要多台服务器,支持多种形式的服务器或虚拟机。同时,为了简化 OpenShift 集群的部署,Red Hat 提供了一个基于 Ansible 的安装程序,可以使用包含环境配置详细信息的应答文件以交互方式或自动非交互方式运行该程序。
在运行安装程序之前,您需要执行一些安装前任务以及安装后任务,以获得功能齐全的 OpenShift 容器平台集群。 Red hat 提供了两种不同的方式来安装 OpenShift 容器平台。
-
第一种方法使用快速安装程序,可用于简单的集群设置。
-
第二种方法是一种更精细的安装方法,使用Ansible playbook 来自动化这个过程。
本实验使用 ansible 自动配置 openshift 集群。同时,Ansible 可以为 OpenShift 安装准备主机,例如包安装、禁用服务和自定义配置。
提示:更多 Ansible 内容参考https://www.cnblogs.com/itzgr/category/1333622.html。
1.2节点准备
对应的master和node节点需要互联,所有节点的master都需要配置keyless登录。同时可以解析所有的FQDN,注册对应的repo库。
提示:以上准备工作也可以通过Ansible直接运行对应的yml来完成。
实验一:前置条件操作
2.1 环境准备
[ student@workstation ~]$lab install 准备设置?运行准备脚本
提示:此环境基于 RedHat RH280 环境。所有lab命令都是为环境自动化准备命令,以后不再赘述。
2.2 安装 Ansible
[学生@工作站~]$ rpm -qa | grep ansible
[student@workstation ~]$ sudo yum -y install ansible
2.3 验证 Ansible
[student@workstation ~]$ cd /home/student/DO280/labs/install-prepare/
[student@workstation ~]$ ansible --version
[student@workstation install-prepare]$ cat ansible.cfg
zwz 100095 zwz 100096 zwz 100094 ! zwz 100098 zwz 100099 zwz 100097
[student@workstation install-prepare]$ cat 库存
! swz 100101 swz 100102 swz 100100
库存文件说明:
Inventory 定义了六个主机组:
-
工作站:开发者节点,即运行playbook的节点;
-
nfs:环境中的vm,为集群存储提供nfs服务;
-
masters:OpenShift集群中作为master角色的节点;
-
etcd:OpenShift集群的etcd服务节点。本环境使用主节点;
-
Node:OpenShift集群中的node节点;
-
OSEv3:构成 OpenShift 集群的所有接收,包括 master、etcd、node 或 nfs 组中的节点。
注意:docker默认使用线上仓库下载容器镜像。该环境没有网络,所以将docker仓库配置为内部私有仓库。仓库配置是通过使用yml中的变量来引入的。
此外,安装会在每台主机上配置 docker 守护进程,以使用 overlay2 映像驱动程序存储容器映像。 Docker 支持许多不同的图像驱动程序。如 AUFS、Btrfs、Device mapper 和 OverlayFS。
2.4 检查节点连通性
[student@workstation install-prepare]$ cat ping.yml
1 ---
2 - 名称:验证连接
3 台主机:全部
4 收集事实:没有
5 个任务:
6 - 名称:“测试与机器的连接性。”
7 贝壳:“whoami”
8 changed_when: false
[student@workstation install-prepare]$ ansible-playbook -v ping.yml
2.5 确认yml
[student@workstation install-prepare]$ cat prepare_install.yml
! swz 100104 swz 100105 swz 100103
解释:如前所述,yml引入了三个role。
docker storage的内容如下。该角色定义了相关docker的后端存储驱动以及创建docker所需的镜像存储路径,最后启动docker。
[student@workstation install-prepare]$ cat roles/docker-storage/tasks/main.yml
1 ---
2 - 块:
3 - 名称:自定义默认 /etc/sysconfig/docker-storage-setup
4个模板:
5 src:码头存储设置
6 目标:/etc/sysconfig/docker-storage-setup
7 所有者:root
8组:根
9模式:0644
10 时:不使用\overlay2\driver
11 - 名称:使用 overlay2 存储驱动程序自定义 /etc/sysconfig/docker-storage-setup
12个模板:
13 src:docker-storage-setup-overlay2
14 目标:/etc/sysconfig/docker-storage-setup
15 所有者:root
16组:根
17模式:0644
18 时:使用\overlay2\driver
19 - 名称:验证 /dev/docker-vg/docker-pool 是否存在
20 统计:
21 路径:/dev/docker-vg/docker-pool
22 寄存器:p
23 - 名称:停止泊坞窗
24 服务:
25 名称:码头工人
26 状态:停止
27 时:p.stat.exists u003du003d False
28 - 名称:删除环回 docker 文件
29 文件:
30 目标:/var/lib/docker
31 状态:缺席
32 时:p.stat.exists u003du003d False
33 - 名称:运行 docker-storage-setup
34 命令:/usr/bin/docker-storage-setup
35 时:p.stat.exists u003du003d False
36 - 名称:启动并启用 docker
37服务:
38 名称:码头工人
39 状态:开始
40 时:p.stat.exists u003du003d False
41 时:定义了 docker\storage\device
42
[student@workstation install-prepare]$ cat roles/docker-storage/templates/docker-storage-setup
1 DEVSu003d{{ 码头\存储\设备}}
2 VGu003ddocker-vg
3 设置_LVM_THIN_POOLu003d是
docker registry cert的内容如下。该角色定义了相关docker使用的私有仓库,并导入相关crt证书。
[student@workstation install-prepare]$ cat roles/docker-registry-cert/tasks/main.yml
1 ---
2 - 名称:启用信任
3 外壳:更新-CA-信任启用
4 - 名称:检索证书
5 获取:
6 src:“{{ cacert }}”
7 最佳:“{{ 本地\目的地 }}”
8 委托_to:“{{ 注册表_host }}”
9 - 名称:复制证书
10 份:
11 源代码:“{{ 源代码}}”
12 目的地:“{{目的地}}”
13 所有者:root
14组:根
15模式:0755
16 - 名称:更新信任
17 外壳:更新-CA-信任提取
18 - 名称:重启 Docker
19 项服务:
20 名称:码头工人
21 状态:重新启动
22
[student@workstation install-prepare]$ cat roles/docker-registry-cert/vars/main.yml
1 个注册表_host:services.lab.example.com
2 证书:/etc/pki/tls/certs/example.com.crt
3 本地_destination: /tmp/
4 来源:“/tmp/{{ ansible_fqdn }}/etc/pki/tls/certs/example.com.crt”
5 个目的地:/etc/pki/ca-trust/source/anchors/example.com.crt
OpenShift节点的内容如下。该角色定义了安装 OpenShift 所需的所有依赖包任务。
[student@workstation install-prepare]$ ll 角色/openshift-node/files/
共 4 个
-rw-r--r--。 1 名学生 389 2018 年 7 月 19 日 id_rsa.pub
[student@workstation install-prepare]$ cat roles/openshift-node/meta/main.yml
1 ---
2 个依赖项:
3 - {角色:码头工人}
[student@workstation install-prepare]$ cat roles/openshift-node/tasks/main.yml
1 ---
2 - 名称:将 ssh 密钥部署到所有节点的 root
3 个授权_key:
4个用户:root
5键:“{{项目}}”
6 与_file:
7 - id_rsa.pub
8 - 名称:安装所需的包
9 百胜:
10 名称:“{{ 项目 }}”
11 状态:最新
12 与_items:
13 - wget
14 - 混帐
15 - 网络工具
16 - 绑定工具
17 - iptables 服务
18 - 桥接工具
19 - bash 完成
20 - kexec 工具
21 - 苏
22 - psacct
23 - atomic-openshift-clients
24 - atomic-openshift-utils
25 - 原子-openshift
26
2.6运行剧本
[student@workstation ~]$ cd /home/student/DO280/labs/install-prepare/
[student@workstation install-prepare]$ ansible-playbook prepare_install.yml
! swz 100107 swz 100108 swz 100106
提示:此准备工作将完成以下操作:
-
在每个节点上安装并运行Docker;
-
Docker在每个节点上使用一个逻辑卷存储;
-
每个节点使用自签名证书信任私有Docker仓库;
-
基础包安装在每个节点上。
2.7 验证
[student@workstation install-prepare]$ for vm in master node1 node2;
做 echo -e "\n$vm"
ssh $vm sudo systemctl status docker |头-n3
做?验证 docker 服务
! swz 100110 swz 100111 swz 100109
[student@workstation install-prepare]$ for vm in master node1 node2;
做 echo -e "\n$vm : lvs"
ssh $vm sudo lvs
echo -e "\n$vm : df -h"
ssh $vm sudo df -h | grep vg-docker
做?查看docker使用的lvm

[student@workstation install-prepare]$ for vm in master node1 node2;
做 echo -e "\n$vm"
ssh $vm docker pull rhel7:latest
做?测试拉取图像

[student@workstation install-prepare]$ for vm in master node1 node2;
做 echo -e "\n$vm"
ssh $vm rpm -qa wget git net-tools bind-utils \
yum-utils iptables-services bridge-utils bash-completion \
kexec-tools sos psacct atomic-openshift-utils
做?检查依赖包是否安装成功
三.正式的安装说明
3.1 安装步骤
安装准备完成后,正式安装包括四个步骤:
-
编写目录文件,描述所需的集群特性和架构;
-
实现prerequisites.yml playbook;
-
执行 deploy\cluster,yml playbook;
-
验证安装。
3.2 安装配置节点
OpenShift Inventory 定义了以下主机组。
Master:对于 OpenShift,这是一个必需的组。它定义了 OpenShift 集群中的哪些主机充当主节点;
Node:对于 OpenShift,这是一个必要的组,它定义了 OpenShift 集群中哪些主机充当节点节点;
etcd:在 [master] 部分列出的所有主机也应该属于 etcd;
NFS:这个组是可选的,应该只包含一个主机。如果 Inventory 文件中有特定的变量,OpenShift playbook 会在这台机器上安装和配置 NFS;
OSEv3:该组包含属于 OpenShift 集群的所有机器。安装脚本引用该组来运行集群范围内的任务。
[student@workstation install-prepare]$ cat 库存

解释:
-
安装所需版本的OpenShift容器平台;
-
用户使用htpasswd认证对集群进行认证;
-
DNS 条目 apps.lab.example.com 作为 OpenShift 应用程序的子域;
-
NFS存储用于OpenShift etcd服务和OpenShift内部仓库;
-
教室容器注册中心用作仓库。
变量说明:
OpenShift 安装变量记录在 Inventory 的 [OSEv3:vars] 部分中。 install 变量用于配置多个 OpenShift 组件,例如:
-
内部集装箱仓库;
-
Gluster、Ceph等提供持久化存储;
-
集群日志;
-
自定义集群证书。
3.3 配置OpenShift版本
您可以通过在 [OSEv3:vars] 中指定以下配置来确定 OpenShift 的版本:
openshift_deployment_typeu003dopenshift-企业
openshift_releaseu003dv3.9
使用可选值 OpenShift enterprise 和 origin 指定 OpenShift 部署类型。
openshift\image\tagu003dv3.9.14
openshift_disable_checku003ddisk_availability,docker_storage,memory_availability
容器化 OpenShift 服务使用标记为“v3.9.14.”的图像。这将阻止集群自动升级到更新的容器镜像;
对于非生产集群,您可以禁用系统要求检查。
3.4 配置验证
OpenShift 容器平台身份验证基于 OAuth,它提供了基于 HTTP 的 APl,用于对交互式和非交互式客户端进行身份验证。
OpenShift master 运行一个 OAuth 服务器。 OpenShift 可以支持多个提供商,这些提供商可以与组织特定的身份管理产品集成。 OpenShift 身份验证支持的 Provider :
-
HTTP Basic,外部单点登录(SSO)系统;
-
使用 GitHub 和 GitLab 账号;
-
OpenID连接,使用OpenID兼容SSO和谷歌账号;
-
OpenStack Keystone v3;
-
LDAP v3 服务器。
OpenShift 安装程序使用默认的安全方法,而 DenyAllPasswordIdentityProvider 是默认的 Provider。使用这个 Provider 意味着只有 master 主机上的 root 用户可以使用 OpenShift 客户端命令和 API。
3.5 配置htpasswd认证
OpenShift HTPasswdPasswordIdentityProvider 根据 Apache HTTPD htpasswd 程序生成的文件验证用户和密码。
htpasswd 程序将用户名和密码保存在一个纯文本文件中,每行一条记录,字段用冒号分隔。密码使用 MD5 哈希。如果您在该文件中添加或删除用户,或者更改用户密码,OpenShift OAuth 服务器会自动重新读取该文件。
要将 HTPasswdPasswordIdentityProvider 用于 OpenShift 主配置,需要配置 openshift_ master_ identity_ providers。
1 个 openshift_master_identity_providers。
2 openshift_master_identity_providersu003d[{'name': 'htpasswd_auth', 'login': 'true',
3 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', #配置后端驱动
4 'filename': '/etc/origin/master/htpasswd'}] #Make master
它还支持直接在配置文件中指定初始用户名和密码。
openshift_master_htpasswd_usersu003d"{'user1':'$apr1$.NHMsZYc$MdmfWN5DM3q280/W7c51c/',
'user2':'$apr1$.NHMsZYc$MdmfWN5DM3q280/W7c51c/'}"
生产哈希密码可以参考如下:
1 [student@workstation ~]$ htpasswd -nb admin redhat
2 [student@workstation ~]$ openssl passwd -apr1 redhat
3.6 网络要求
集群节点的通配符 DNS 条目允许将任何新创建的路由自动路由到子域集群。通配符 DNS 条目必须存在于唯一的子域中,例如 apps.mycluster.com 并解析为集群节点的主机名或 IP 地址。清单文件中的通配符 DNS 条目通过变量 openshift_master_default_subdomain。
openshift_master_default_subdomainu003dapps.mycluster.com
3.7主服务端口
主服务端口 openshift_master_api_port 变量定义了主API的监听端口。默认端口为 8443,master 使用 SSL 时,也可以使用 443 端口。因此,连接时省略端口号。
主控控制台端口由 openshift_master_console_port 变量的值设置。默认端口为 8443。主控台端口也可以设置为 443 以在连接时省略端口号。
3.8 防火墙
OpenShift 节点上的默认防火墙服务是 iptables。要在所有节点上使用firewalld作为防火墙服务,需要将操作系统防火墙使用firewalld变量设置为true,即os_firewall_use_firewalldu003dtrue。
四.配置持久存储
4.1 持久化存储配置
默认情况下,容器数据是临时的,在容器被销毁时会丢失。 Kubernetes 持久卷框架为容器请求和使用持久存储提供了一种机制。为了避免数据丢失,这些服务被配置为使用持久卷。
OpenShift 支持多个插件并使用各种存储技术来创建持久卷。您可以使用 NFS、iSCSI、clusterfs、Ceph 或其他商业云存储。
在此环境中,OpenShift 容器注册表和 OpenShift Ansible Broker 服务配置为使用 NFS 持久存储。
提示:默认情况下,OpenShift 在生产环境中不支持 NFS 持久化存储集群。要在非生产集群上允许 NFS 持久存储,需要配置 OpenShift_ enable_ unsupported_configurationu003dtrue。
4.2集装箱仓库
要为 OpenShift 容器注册表配置 NFS 持久存储,请将以下内容添加到 Inventory 文件中:
1 openshift_hosted_registry_storage_kindu003dnfs
2 openshift_hosted_registry_storage_nfs_directoryu003d/exports
3 openshift_hosted_registry_storage_volume_nameu003dregistry
4 openshift_hosted_registry_storage_nfs_optionsu003d'*(rw,root_squash)'
5 openshift_hosted_registry_storage_volume_sizeu003d40G
6 openshift_hosted_registry_storage_access_modesu003d['ReadWriteMany']
4.3 OpenShift Ansible 代理
OpenShift Ansible Broker (OAB) 是一个容器化的 OpenShift 服务,它部署了自己的 etcd 服务。持久性 etcd 存储所需的配置类似于注册表所需的配置。
1 openshift_hosted_etcd_storage_kindu003dnfs
2 openshift_hosted_etcd_storage_nfs_directoryu003d/exports
3 openshift_hosted_etcd_storage_volume_nameu003detcd-vol2
4 openshift_hosted_etcd_storage_nfs_optionsu003d"*(rw,root_squash,sync,no_wdelay)"
5 openshift_hosted_etcd_storage_volume_sizeu003d1G
6 openshift_hosted_etcd_storage_access_modesu003d["ReadWriteOnce"]
7 openshift_hosted_etcd_storage_labelsu003d{'storage': 'etcd'}
其他五种 OpenShift 配置
5.1 配置离线本地注册表
OpenShift 使用容器仓库作为 registry.lab.example.com,配置集群从内部仓库拉取镜像,需要在 Inventory 中进行如下配置:
1 #Modifications Needed for a Disconnected Install
2 oreg_urlu003dregistry.lab.example.com/openshift3/ose-${component}:${version}
3 #可访问镜像仓库的位置必须以ose-${component}:${version}结尾。
4 openshift_examples_modify_imagestreamsu003dtrue
5 #OpenShift 安装用于部署示例应用程序的模板。该变量指示 playbook 将所有样本的 IS 修改为指向私有仓库而不是 registry.access.redhat.com。
6 openshift_docker_additional_registriesu003dregistry.lab.example.com
7 #该变量用于在每个节点的docker配置中添加一个本地可访问的仓库。
8 openshift_docker_blocked_registriesu003dregistry.access.redhat.com,docker.io
9 #该变量用于配置docker在OpenShift节点_registries上的阻塞。
1 #Image 前缀修改
2 openshift_web_console_prefixu003dregistry.lab.example.com/openshift3/oseopenshift_cockpit_deployer_prefixu003d'registry.lab.example.com/openshift3/'
3 openshift_service_catalog_image_prefixu003dregistry.lab.example.com/openshift3/osetemplate_service_broker_prefixu003dregistry.lab.example.com/openshift3/oseansible_service_broker_image_prefixu003d registry.lab.example.com/openshift3/oseansible_service_broker_etcd_image_prefixu003dregistry.lab.example.com/rhel7/
#通过在容器镜像名称前加上registry.lab.example.com 来确保OpenShift 服务的容器镜像可以从私有内部存储库中下载。
5.2 配置NODE标签
节点标签是分配给每个节点的任何键/值描述。节点标签通常用于区分地理数据中心或标识节点上可用资源的有意义的描述。
应用程序可以根据节点标签在其部署中配置选择器。如果匹配,则应用程序的 pod 必须部署在其节点标签兼容的节点上。
使用主机变量 openshift_node_tags 在 Inventory 文件中设置节点标签。
1 [节点]
2 ...输出省略...
3 nodeX.example.com openshift_node_labelsu003d"{'zone':'west', 'gpu':'true'}"
4 ...输出省略...
配置到 nodeX.example.com 配置两个标签,zoneu003dwest 和 gpuu003dtrue。
OpenShift 集群的一个常见架构是区分主节点、基础设施节点和计算节点。
在此架构中,基础设施节点托管 OpenShift Pod 的注册表和路由器,而计算节点托管来自用户项目的应用程序 pod。
主节点不托管应用程序或基础设施 pod。
节点标签可用于标识特定节点的角色。一般主节点标签为 node-role.kubernetes.io/masteru003dtrue ,基础设施节点标签为 regionu003dinfra ,计算节点标签为 noderole.kubernetes.io/computeu003dtrue 。
1 [节点]
2 master.lab.example.com
3 node1.lab.example.com openshift_node_labelsu003d"{'region':'infra'}"
4 node2.lab.example.com
提示:如果一个节点设计为同时托管基础设施和应用程序 pod,则必须明确定义两个节点标签。
[节点]
...
nodeX.example.com openshift_node_labelsu003d"{'region':'infra', 'nodeerole.kubernetes.io/compute':'true'}"
...
六。执行脚本
6.1脚本说明
OpenShift 需要安装 prerequisites.yml 和 deploy_cluster.yml ,由原子 OpenShift utils 包安装。
首先 prequisites.yml PlayBook 检查所有主机是否可以满足 OpenShift 的部署,并尝试修改主机以满足部署要求。然后做 deploy_ cluster.yml PlayBook 开始正式的集群部署
6.2 验证OpenShift
部署后可以访问:https://master.lab.example.com 验证。
七. OpenShift官方安装
7.1 准备工作
[student@workstation ~]$ lab install-prepare setup
[student@workstation ~]$ sudo yum -y install ansible
[student@workstation ~]$ cd /home/student/do280-ansible/
[ student@workstation do280-ansible]$ ansible-playbook playbooks/prepare_ install.yml #搭建相关环境
[student@workstation do280-ansible]$ 实验室安装-运行设置
[student@workstation do280-ansible]$ cd /home/student/DO280/labs/install-run/
7.2 安装原子
[student@workstation install-run]$ sudo yum -y install atomic-openshift-utils
提示:atomic OpenShift utils 提供了安装 OpenShift 所需的 Ansible playbook 和角色。
7.3 创建库存
[student@workstation install-run]$ cp inventory.initial inventory
[student@workstation install-run]$ cat 库存

[student@workstation install-run]$ echo -e "\n[OSEv3:vars]" >> 库存
7.4 配置相关安装版本
1 [student@workstation install-run]$ vi general_vars.txt
2 #General 集群变量
3 openshift_deployment_typeu003dopenshift-enterprise #配置为openshift企业版
4 openshift_releaseu003dv3.9 #配置版本为v3.9
5 openshift_image_tagu003dv3.9.14
6 openshift_disable_checku003ddisk_availability,docker_storage,memory_availability #禁用检查
7.5 设置htpasswd认证
1 [student@workstation install-run]$ openssl passwd -apr1 redhat
2 $apr1$/d1L7fdX$duViLRE.JG012VkZDq8bs0
3 [student@workstation install-run]$ openssl passwd -apr1 redhat
4 $apr1$rUMMfQfD$J8CEqQK.YenyNwYwKN1lA1 #创建两个是redhat的用户密码
5 [student@workstation install-run]$ vi authentication_vars.txt
6 #Cluster 身份验证变量
7 openshift_master_identity_providersu003d[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename' : '/etc/origin/master/htpasswd'}]
8 openshift_master_htpasswd_usersu003d{'admin':'$apr1$/d1L7fdX$duViLRE.JG012VkZDq8bs0', '开发者':'$apr1$rUMMfQfD$J8CEqQK.YenyNwYwKN1lA1'}
7.6 配置集群网络
1 [student@workstation install-run]$ vi 网络_vars.txt
2 #OpenShift 网络变量
3 os\firewall_use\firewalldu003dtrue #开启防火墙
4 openshift\master\api\portu003d443 #启用端口
5 openshift_master_console_portu003d443 #启用控制端口
6 openshift_master_default_subdomainu003dapps.lab.example.com #指定子域
7.7 配置NFS
1 [student@workstation install-run]$ vi persistence_vars.txt
2 #NFS 是不受支持的配置
3 openshift_enable_unsupported_configurationsu003dtrue
4
5 #OCR 配置变量
6 openshift_hosted_registry_storage_kindu003dnfs
7 openshift_hosted_registry_storage_access_modesu003d['ReadWriteMany']
8 openshift_hosted_registry_storage_nfs_directoryu003d/exports
9 openshift_hosted_registry_storage_nfs_optionsu003d'*(rw,root_squash)'
10 openshift_hosted_registry_storage_volume_nameu003dregistry
11 openshift_hosted_registry_storage_volume_sizeu003d40Gi
12
13 #OAB的etcd配置变量
14 openshift_hosted_etcd_storage_kindu003dnfs
15 openshift_hosted_etcd_storage_nfs_optionsu003d"*(rw,root_squash,sync,no_wdelay)"
16 openshift_hosted_etcd_storage_nfs_directoryu003d/exports
17 openshift_hosted_etcd_storage_volume_nameu003detcd-vol2
18 openshift_hosted_etcd_storage_access_modesu003d["ReadWriteOnce"]
19 openshift_hosted_etcd_storage_volume_sizeu003d1G
20 openshift_hosted_etcd_storage_labelsu003d{'storage': 'etcd'}
7.8 配置离线仓库
1 #Modifications Needed for a Disconnected Install
2 oreg_urlu003dregistry.lab.example.com/openshift3/ose-${component}:${version} #添加内部仓库
3 openshift_examples_modify_imagestreamsu003dtrue #修改 IS
4 openshift_docker_additional_registriesu003dregistry.lab.example.com #内部仓库到docker配置
5 openshift_docker_blocked_registriesu003dregistry.access.redhat.com,docker.io #禁止外部官方仓库
6 #Image 前缀
7 openshift_web_console_prefixu003dregistry.lab.example.com/openshift3/ose-
8 openshift_cockpit_deployer_prefixu003d'registry.lab.example.com/openshift3/'
9 openshift_service_catalog_image_prefixu003dregistry.lab.example.com/openshift3/ose-
10 模板_service_broker_prefixu003dregistry.lab.example.com/openshift3/ose-
11 ansible_service_broker_image_prefixu003dregistry.lab.example.com/openshift3/ose-
12 ansible_service_broker_etcd_image_prefixu003dregistry.lab.example.com/rhel7/
7.9 设置标签
[student@workstation install-run]$ vi 库存
1 ......
2 [节点]
3 master.lab.example.com
4 node1.lab.example.com openshift_node_labelsu003d"{'region':'infra', 'node-role.kubernetes.io/compute':'true'}"
5 node2.lab.example.com openshift_node_labelsu003d"{'region':'infra', 'node-role.kubernetes.io/compute':'true'}"
7.10 合并校对Inventory
[student@workstation install-run]$ cat general_vars.txt 网络_vars.txt 身份验证_vars.txt 持久性_vars.txt 断开_vars.txt >> 库存
[ student@workstation 安装运行] $lab 安装运行成绩。此环境提供脚本来检查库存
[student@workstation install-run]$ cat 库存
1 [student@workstation install-run]$ cat general_vars.txt 网络_vars.txt 身份验证_vars.txt 持久性_vars.txt 断开连接_vars.txt >> 库存
2 [student@workstation install-run]$ lab install-rungrade #此环境提供了检查Inventory的脚本
3 [student@workstation install-run]$ cat 库存
4 [工作站]
5 工作站.lab.example.com
6
7 [nfs]
8 services.lab.example.com
9
10 [大师]
11 master.lab.example.com
12
13 [etcd]
14 master.lab.example.com
15
16 [节点]
17 master.lab.example.com
18 node1.lab.example.com openshift_node_labelsu003d"{'region':'infra', 'node-role.kubernetes.io/compute':'true'}"
19 node2.lab.example.com openshift_node_labelsu003d"{'region':'infra', 'node-role.kubernetes.io/compute':'true'}"
20
21 [OSEv3:儿童]
22 位大师
23 等
24 个节点
25 nfs
26
27 #Variables 需要教室主机准备剧本。
28 [节点:变量]
29 注册表_localu003dregistry.lab.example.com
30 使用\overlay2\driveru003dtrue
31 不安全_registryu003dfalse
32 运行_docker_offlineu003dtrue
33 docker_storage_deviceu003d/dev/vdb
34
35
36 [OSEv3:vars]
37 #General 集群变量
38 openshift_deployment_typeu003dopenshift-企业
39 openshift_releaseu003dv3.9
40 openshift_image_tagu003dv3.9.14
41 openshift_disable_checku003ddisk_availability,docker_storage,memory_availability
42 #OpenShift 网络变量
43 操作系统_ 防火墙_ se_ firewalldu003dtrue
44 openshift\master\api\portu003d443
45 openshift_master_console_portu003d443
46 openshift_master_default_subdomainu003dapps.lab.example.com
47 #Cluster 身份验证变量
48 openshift_master_identity_providersu003d[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename' : '/etc/origin/master/htpasswd'}]
49 openshift_master_htpasswd_usersu003d{'admin':'$apr1$/d1L7fdX$duViLRE.JG012VkZDq8bs0', '开发者':'$apr1$rUMMfQfD$J8CEqQK.YenyNwYwKN1lA1'}
50
51 #NFS 是不受支持的配置
52 openshift_enable_unsupported_configurationsu003dtrue
53
54 #OCR 配置变量
55 openshift_hosted_registry_storage_kindu003dnfs
56 openshift_hosted_registry_storage_access_modesu003d['ReadWriteMany']
57 openshift_hosted_registry_storage_nfs_directoryu003d/exports
58 openshift_hosted_registry_storage_nfs_optionsu003d'*(rw,root_squash)'
59 openshift_hosted_registry_storage_volume_nameu003dregistry
60 openshift_hosted_registry_storage_volume_sizeu003d40Gi
61
62 #OAB 的 etcd 配置变量
63 openshift_hosted_etcd_storage_kindu003dnfs
64 openshift_hosted_etcd_storage_nfs_optionsu003d"*(rw,root_squash,sync,no_wdelay)"
65 openshift_hosted_etcd_storage_nfs_directoryu003d/exports
66 openshift_hosted_etcd_storage_volume_nameu003detcd-vol2
67 openshift_hosted_etcd_storage_access_modesu003d[“ReadWriteOnce”]
68 openshift_hosted_etcd_storage_volume_sizeu003d1G
69 openshift_hosted_etcd_storage_labelsu003d{'storage': 'etcd'}
70
71 #Modifications Needed for a Disconnected Install
72 oreg_urlu003dregistry.lab.example.com/openshift3/ose-${component}:${version}
73 openshift_examples_modify_imagestreamsu003dtrue
74 openshift_docker_additional_registriesu003dregistry.lab.example.com
75 openshift_docker_blocked_registriesu003dregistry.access.redhat.com,docker.io
76
77 #图像前缀
78 openshift_web_console_prefixu003dregistry.lab.example.com/openshift3/ose-
79 openshift_cockpit_deployer_prefixu003d'registry.lab.example.com/openshift3/'
80 openshift_service_catalog_image_prefixu003dregistry.lab.example.com/openshift3/ose-
81 模板_service_broker_prefixu003dregistry.lab.example.com/openshift3/ose-
82 ansible_service_broker_image_prefixu003dregistry.lab.example.com/openshift3/ose-
83 ansible_service_broker_etcd_image_prefixu003dregistry.lab.example.com/rhel7/
7.11 执行安装脚本
[student@workstation install-run]$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/prerequisites.yml
#执行准备剧本

[student@workstation install-run]$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/deploy_cluster.yml
! swz 100128 swz 100129 swz 100127
提示:将整个部署日志保存到本地目录 ansible.log 中。
八.验证测试
8.1 验证说明
要验证 OpenShift 安装,您必须测试和验证所有 OpenShift 组件。仅从示例容器映像启动 pod 是不够的,因为这不使用 OpenShift 构建器、部署器、路由器或内部注册表。
-
建议通过以下方式对 OpenShift 进行全面验证:
-
检查所有OpenShift节点的状态;
-
查看对应OpenShift registry和router的pod;
-
使用OpenShift从源码构建应用,OpenShift从构建结果生成容器镜像,并从镜像启动pod;
-
创建一个服务,以便可以从内部容器网络和OpenShift节点访问应用程序;
-
创建一个路由,以便可以从 OpenShift 集群外部的计算机访问应用程序。
安装后OpenShift客户端可以使用oc,主节点可以使用oadm命令。主节点的 root 用户将被配置为以云管理员身份运行 OpenShift 客户端和管理员命令。
安装程序默认配置一些 OpenShift 内部服务,例如内部存储库和路由器。运行 oc get nodes 和 oc get pods 命令以验证安装是否成功。
8.2登录测试
浏览器访问:https://master.lab.example.com
zwz 100131 zwz 100132 zwz 100130 ! zwz 100134 zwz 100135 zwz 100133
zwz 100137 zwz 100138 zwz 100136 ! zwz 100140 zwz 100141 zwz 100139
8.3 验证OpenShift功能
[student@workstation ~]$ oc login -uadmin -predhat https://master.lab.example.com
! swz 100143 swz 100144 swz 100142
提示:需要单独授予账户权限。安装过程中创建的adminn没有集群的管理权限。
8.4 授予权限
system:admin 是唯一具有集群管理权限的帐户。 master节点的root用户都是集群系统:admin用户。
[root@master ~]# oc whoami
系统:管理员
[ root@master ~]#OC ADM策略添加集群角色给用户集群管理员
提示:集群管理员角色权限非常高,允许管理员用户破坏和修改集群资源,必须谨慎使用。
8.5 查看节点状态
使用命令再次登录。
[student@workstation ~]$ oc login -uadmin -predhat https://master.lab.example.com
! swz 100146 swz 100147 swz 100145
[student@workstation ~]$ oc 获取节点
姓名 状态 角色 年龄 版本
master.lab.example.com 准备好的master 14h v1.9.1+a0ce1bc657
node1.lab.example.com 就绪计算 14h v1.9.1+a0ce1bc657
node2.lab.example.com 就绪计算 14h v1.9.1+a0ce1bc657
[student@workstation ~]$ oc 获取 pod
名称 就绪 状态 重新开始 年龄
docker-registry-1-4w5tb 1/1 运行 1 14h
docker-registry-1-j7k59 1/1 运行 1 14h
registry-console-1-mtkxc 1/1 运行 1 14h
router-4-9dfxc 1/1 运行 0 4h
router-4-kh7th 1/1 运行 0 5h
8.6 创建项目
[student@workstation ~]$ oc new-project smoke-test
8.7 创建应用
[student@workstation ~]$ oc new-app --nameu003dhello -i php:7.0 http://registry.lab.example.com/php-helloworld
[ student@workstation ~]$OC get Pods - W - 监控 pod 创建
8.8 查看路线
[student@workstation ~]$ oc 获取路线
名称主机/端口路径服务端口终止通配符
你好 hello-smoke-test.apps.lab.example.com 你好 8080-tcp 无
8.9 公共服务
[ student@workstation ~]$OC 公开服务你好?向外部网络公开服务
8.10测试服务
[student@workstation ~]$ curl http://hello-smoke-test.apps.lab.example.com
你好世界! php版本是7.0.10
[ student@workstation ~]$OC 删除项目安装帖
8.11 测试开发者
[ student@workstation ~]$OC login - U developer - 用redhat密码登录
[student@workstation ~]$ oc new-project smoke-test
[student@workstation ~]$ oc new-app php:5.6~http://services.lab.example.com/php-helloworld --name hello
[ student@workstation ~]$OC logs - f BC / Hello - 监控构建过程
提示:输出显示 OpenShift 可以从仓库克隆代码构建镜像,同时将新镜像推送到内部仓库。
[student@workstation ~]$ oc 公开 svc 你好
路线“你好”暴露
[student@workstation ~]$ oc 获取路线
名称主机/端口路径服务端口终止通配符
你好 hello-smoke-test.apps.lab.example.com 你好 8080-tcp 无
[student@workstation ~]$ curl hello-smoke-test.apps.lab.example.com
你好世界! php版本是5.6.25
更多推荐
所有评论(0)