第一章 OpenShift概述


1.1 概述


  • Red Hat OpenShift Container Platform 基于kubernetes容器基础架构构建
  • 增添了:远程管理、租户、安全性增强、监控与审计、应用生命周期管理和自服务接口等
  • 是一个生产用的PaaS平台
  • RHOCP v4开始,集群中所有主机均采用CoreOS作为底层操作系统

OpenShift功能

  • 集成式开发流:OCP内置registry、CI/CD管道和S2I功能
  • 路由:向外界发布service
  • Metrics和日志记录:包含内置自我分析metrics服务和聚合日志记录(EKF)
  • 统一UI:OC命令和Web Console
[root@redhat1 ~]# podman images
REPOSITORY                           TAG         IMAGE ID      CREATED     SIZE
registry.access.redhat.com/ubi9/ubi  latest      a87631f6cdda  4 days ago  251 MB

[root@redhat1 ~]# podman run registry.access.redhat.com/ubi9/ubi:latest echo "Hello World!"
Hello World!

[root@redhat1 ~]# podman run -d -p 8080 registry.access.redhat.com/ubi9/ubi:latest

第二章 搭建OpenShift


2.1 资源规划


作用 IP地址 操作系统 配置
Master 172.16.140.133 Centos7.9 基础设施服务器 2颗CPU 2G内存 50G硬盘
Node1 172.16.140.135 Centos7.9 基础设施服务器 2颗CPU 2G内存 50G硬盘
Node2 172.16.140.134 Centos7.9 基础设施服务器 2颗CPU 2G内存 50G硬盘

2.2 安装过程


2.2.1 前期配置

开启所有节点的SELinux(所有主机执行)

[root@master ~]# grep -v ^# /etc/selinux/config | grep -v ^$
SELINUX=enforcing
SELINUXTYPE=targeted

所有节点关闭防火墙(所有主机执行)

[root@master ~]# systemctl stop firewalld && systemctl disable firewalld

2.2.2 安装依赖包

安装OpenShift依赖的软件包(所有主机执行)

[root@master ~]# yum -y install wget git net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct bash-completion.noarch python-passlib NetworkManager vim

安装docker(所有主机执行)

[root@master ~]# docker version
Client:
 Version:           18.06.3-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        d7080c1
 Built:             Wed Feb 20 02:24:54 2019
 OS/Arch:           linux/arm64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.3-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       d7080c1
  Built:            Wed Feb 20 02:28:12 2019
  OS/Arch:          linux/arm64
  Experimental:     false

配置Docker镜像仓库(所有主机执行)

# 可以搭建私服,挂🪜把镜像推上去
[root@master ~]# less /etc/docker/daemon.json
{
        "exec-opts": ["native.cgroupdriver=systemd"],
        "registry-mirrors": ["https://kn0t2bca.mirror.aliyuncs.com"],
        "insecure-registries" : ["47.93.22.25:5000"]
}

# 重启docker使配置生效
[root@master ~]# systemctl daemon-reload && systemctl restart docker && systemctl enable docker

Master主机上安装Ansible(自动化运维工具)

[root@master ~]# yum -y install epel-release
[root@master ~]# yum -y install centos-release-ansible-28.noarch
[root@master ~]# yum list ansible --showduplicates
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: d2lzkl7pfhq30w.cloudfront.net
可安装的软件包
ansible.noarch                                                                2.8.5-1.el7                                                                 epel
[root@master ~]# yum -y install ansible-2.8.5

# 查看ansible版本
[root@master ~]# ansible --version
ansible 2.8.5
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Oct 14 2020, 14:56:59) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]

2.2.3 安装/配置 OpenShift

Master主机上下载安装openshift-ansible-3.11.764-1.tar.gz

下载安装包,解压后文件夹重命名

#下载链接
# https://tonkyshan.cn/files/openshift-ansible-3.11.764-1.tar.gz
[root@master ~]# tar -zxvf openshift-ansible-openshift-ansible-3.11.764-1.tar.gz
[root@master ~]# mv openshift-ansible-openshift-ansible-3.11.764-1/  openshift-ansible
# 修改内容如下
[OSEv3:children]
masters
nodes
etcd

[OSEv3:vars]
ansible_ssh_user=root
# 使用origin社区版
openshift_deployment_type=origin
deployment_type=origin
# 指定安装版本
openshift_release=v3.11
# 指定默认域名,访问时需要使用该域名,无dns服务器时需要手动添加本地hosts文件
openshift_master_default_subdomain=tonkyshan.cn
# 禁止磁盘、内存、镜像的检查
openshift_disable_check=disk_availability,docker_storage,memory_availability
# disk_availability: 报错信息是推荐的master磁盘空间剩余量大于40GB。测试环境无法满足;跳过检测
# memory_availability: 报错信息是推荐的master内存为16GB;node内存为8GB;测试环境无法满足;跳过检测
# docker_image_availability: 报错信息是需要的几个镜像未找到;选择跳过;装完集群后;在使用的时候再自行下载
# docker_storage: 报错信息是推荐选择一块磁盘空间存储镜像;这里选择跳过。采用docker默认的方式存储镜像
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]
openshift_master_htpasswd_file=/etc/origin/master/htpasswd
# ntp时间同步
openshift_clock_enabled=true
# 节点配额
openshift_node_groups.edits={'pods-per-core': ['10']}
# 主机组
[masters]
master openshift_schedulable=True
# 节点的主机组,包含region和infra
[nodes]
master openshift_node_groups.labels="{'region': 'infra'}"
node1 openshift_node_groups.labels="{'region': 'infra', 'zone': 'default'}"
node2 openshift_node_groups.labels="{'region': 'infra', 'zone': 'default'}"
master openshift_node_group_name='node-config-master'
node1 openshift_node_group_name='node-config-compute'
node2 openshift_node_group_name='node-config-compute'

# 至少有一个节点需要是node-config-infra
node2 openshift_node_group_name='node-config-infra'

[etcd]
master

部署前检测