• 1.openshift搭建


    第1章 主机规划和所需文件

    1.1 主机规划

    IP地址

    域名

    用途

    11.11.233.125

    master01.song.test.cnpc

    容器编排、etcd

    11.11.233.126

    master02.song.test.cnpc

    容器编排、etcd

    11.11.233.134

    master03.song.test.cnpc

    容器编排、etcd

    11.11.233.127

    node1.song.test.cnpc

    Infra

    11.11.233.128

    node2.song.test.cnpc

    Infra

    11.11.233.129

    node3.song.test.cnpc

    Infra

    11.11.233.130

    node4.song.test.cnpc

    容器运行

    11.11.233.131

    node5.song.test.cnpc

    容器运行

    11.11.233.132

    node6.song.test.cnpc

    容器运行

    11.11.233.133

    ha.song.test.cnpc registry.song.test.cnpc

    Haproxy,registry

    1.2 主机环境检测与确认

    通过top,free,lsblk等命令检测各服务器的硬件配置是否符合规划

    在registry主机上安装ansible 并执行一下play

    1)网络配置检测

    检测各服务器网络配置是否正确,包含ip地址,网络连通性,bond配置等。

    注:bond的故障模拟测试在机房服务器配置网络过程中完成。

    2)时区检测

    使用date命令检测各服务器时区是否为CST。

    运行ntpq -p或chronyc sources -v查看是否配置NTP。

    3)主机名检测

    检测各服务器的主机名是否符合规划。如果未在安装期间配置,则后续执行命令修改。

    4)检测所有服务器libvirtd服务是否处于停止状态

    # systemctl stop libvirtd

    # systemctl disable libvirtd

    # systemctl mask libvirtd

    关闭服务之后重启服务器即可。

    5)所有节点关闭firewalld

    # systemctl stop firewalld

    # systemctl disable firewalld

    # systemctl mask firewalld

    6)所有节点关闭selinux

    # setenforce 0;

    # sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config;

    NetworkManager

    master,node,haproxy节点的selinux不要关。默认为开启,不要改

    NetworkManager默认开启,不要关

    [master]

    11.11.233.125   name=master01

    11.11.233.126   name=master02

    11.11.233.134   name=master03

    [node]

    11.11.233.127   name=node1

    11.11.233.128   name=node2

    11.11.233.129   name=node3

    11.11.233.130   name=node4

    11.11.233.131   name=node5

    11.11.233.132   name=node6

    [other]

    11.11.233.133   name=ha

    [test:children]

    master

    node

    other

    [test:vars]

    ansible_ssh_user=sysadm

    ansible_ssh_pass=Passc0de@tpcpjl

     

     

     

    1.3 搭建yum仓库和docker仓库(ocp3.6)

    OpenShift 3安装及运行依赖的RPM、Docker镜像及程序,需要在联网环境下预先下载。

    需要下载的文件列表如下:

    名称

    备注

    YUM源镜像

    OpenShift安装所依赖的YUM Repo:

    l   rhel-7-server-extras-rpms-3.6

    l   rhel-7-server-ose-3.6-rpms

    l   rhel-7-fast-datapath-rpms-3.6

    Docker镜像

    OpenShift运行所依赖的Docker镜像

    l   jenkins-2-rhel7-latest.tar.gz            

    l   logging-deployer-v3.6.tar.gz      

    l   metrics-deployer-v3.6.tar.gz                 

    l   ose-haproxy-router-v3.6.173.0.96.tar.gz

    l   jenkins-slave-maven-rhel7-latest.tar.gz  

    l   logging-elasticsearch-v3.6.tar.gz 

    l   metrics-hawkular-openshift-agent-v3.6.tar.gz 

    l   ose-pod-v3.6.173.0.96.tar.gz

    l   jenkins-slave-nodejs-rhel7-latest.tar.gz 

    l   logging-fluentd-v3.6.tar.gz       

    l   metrics-heapster-v3.6.tar.gz                 

    l   ose-sti-builder-v3.6.173.0.96.tar.gz

    l   logging-auth-proxy-v3.6.tar.gz           

    l   logging-kibana-v3.6.tar.gz        

    l   ose-deployer-v3.6.173.0.96.tar.gz            

    l   registry-console-v3.6.tar.gz

    l   logging-curator-v3.6.tar.gz              

    l   metrics-cassandra-v3.6.tar.gz     

    l   ose-docker-registry-v3.6.173.0.96.tar.

    [root@ha ~]# tree -L 3 /mnt/

    /mnt/

    ├── registry

    │   └── docker

    │       └── registry

    └── yum

        ├── rhel-7-fast-datapath-rpms

        │   ├── Packages

        │   └── repodata

        ├── rhel-7-server-ansible-2.4-rpms

        │   ├── Packages

        │   └── repodata

        ├── rhel-7-server-extras-rpms

        │   ├── Packages

        │   └── repodata

        ├── rhel-7-server-ose-3.6-rpms

        │   ├── Packages

        │   └── repodata

        ├── rhel-7-server-ose-3.7-rpms

        │   ├── Packages

        │   └── repodata

        ├── rhel-7-server-ose-3.8-rpms

        │   ├── Packages

        │   └── repodata

        ├── rhel-7-server-ose-3.9-rpms

        │   ├── Packages

        │   └── repodata

        └── rhel-7-server-rpms

            ├── Packages

            └── repodata

    配置好httpd和 repo文件

    [root@ha ~]# cat /etc/yum.repos.d/redhat7.3.repo

    [server-ose-3.9-rpms]

    baseurl = http://11.11.233.133/rhel-7-server-ose-3.9-rpms

    name = Red Hat OpenShift Container Platform 3.9  RPMs

    enabled = 0

    gpgcheck = 0

     

    [rhel-7-server-ose-3.6-rpms]

    name = rhel-7-server-ose-3.6-rpms

    baseurl = http://11.11.233.133/rhel-7-server-ose-3.6-rpms/

    gpgcheck = 0

    enabled = 1

     

    [rhel-7-server-ose-3.8-rpms]

    baseurl = http://11.11.233.133/rhel-7-server-ose-3.8-rpms

    name = Red Hat OpenShift Container Platform 3.8  RPMs

    enabled = 0

    gpgcheck = 0

     

    [rhel-7-server-ose-3.7-rpms]

    baseurl = http://11.11.233.133/rhel-7-server-ose-3.7-rpms

    name = Red Hat OpenShift Container Platform 3.7  RPMs

    enabled = 0

    gpgcheck = 0

     

    [rhel-7-server-extras-rpms]

    baseurl = http://11.11.233.133/rhel-7-server-extras-rpms

    name = Red Hat rhel-7-server-extras-rpms  RPMs

    enabled = 1

    gpgcheck = 0

     

    [rhel-7-fast-datapath-rpms]

    baseurl = http://11.11.233.133/rhel-7-fast-datapath-rpms

    name = Red Hat rhel-7-fast-datapath-rpms  RPMs

    enabled = 1

    gpgcheck = 0

     

    [rhel-7-server-ansible-2.4-rpms]

    baseurl = http://11.11.233.133/rhel-7-server-ansible-2.4-rpms

    name = Red Hat rhel-7-server-ansible-2.4-rpms  RPMs

    enabled = 1

    gpgcheck = 0

     

    [rhel-7-server-rpms]

    baseurl = http://11.11.233.133/rhel-7-server-rpms

    name = Red Hat rhel-7-server-rpms  RPMs

    enabled = 1

    gpgcheck = 0

    [root@ha ~]# yum repolist

    Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager

    This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

    repo id                                                                              repo name                                                                                           status

    rhel-7-fast-datapath-rpms                                                            Red Hat rhel-7-fast-datapath-rpms  RPMs                                                                38

    rhel-7-server-ansible-2.4-rpms                                                       Red Hat rhel-7-server-ansible-2.4-rpms  RPMs                                                           10

    rhel-7-server-extras-rpms                                                            Red Hat rhel-7-server-extras-rpms  RPMs                                                               141

    rhel-7-server-ose-3.6-rpms                                                           rhel-7-server-ose-3.6-rpms                                                                            483

    rhel-7-server-rpms                                                                   Red Hat rhel-7-server-rpms  RPMs                             

    仓库使用 docker-registry

    [root@ha ~]# cat /etc/docker-distribution/registry/config.yml

    version: 0.1

    log:

      fields:

        service: registry

    storage:

        cache:

            layerinfo: inmemory

        filesystem:

            rootdirectory: /mnt/registry

    http:

        addr: :5000

        secret: 95d5b1erc2a905586e790f794514ea38

    测试镜像拉取

    v3.6: Pulling from registry.song.test.cnpc:5000/openshift3/logging-curator

    9cadd93b16ff: Already exists

    4aa565ad8b7a: Already exists

    d131575534ed: Pull complete

    Digest: sha256:9a0d7cf6532da31f08239cc25e74bad118a828b4dc3a67a8bf442ff6faba140f

    Status: Downloaded newer image for registry.song.test.cnpc:5000/openshift3/logging-curator:v3.6

    第2章 安装OpenShift预备

    2.1 安装软件包并配置基础环境

    l  在所有节点上安装OpenShift需要的软件包。命令如下:

    yum -y install wget git net-tools bind-utils iptables-services bridge-utils bash-completion vim atomic-openshift-excluder atomic-openshift-docker-excluder unzip kexec sos psacct;

    yum -y update;

    atomic-openshift-excluder unexclude;

    l  确认SELinux为permissive状态。命令如下:

    setenforce 0;

    sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config;

    l  所有节点关闭firewalld。命令如下:

    systemctl disable firewalld;

    systemctl stop  firewalld;

    2.2 配置免密登录

    l  在Master节点上生成SSH所需之秘钥。命令如下,应答输入请直接输入回车。

    ssh-keygen;

    l  在Master节点上配置Master节点到所有节点的SSH主机互信。命令如下,请根据提示输入远程主机Root账户密码。

    l  如果root登录关闭,需要开启,使用如下命令:sed -i 's/PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config

    l  cat /etc/ssh/sshd_config

    2.3 本地DNS服务器创建与配置

    每个master和node

    # 因为dnsmasq服务会和libvirt服务冲突,所以此处把它干掉

    yum remove libvirt -y

    ps -ef |grep dnsmasq |grep -v grep |awk '{print $2}' |xargs -i kill -9 {}

    systemctl disable libvirtd

    systemctl stop libvirtd

    2.3.1 添加dnsmasq配置

    每个master节点添加wildcard域名指向。命令如下:

    cat > /etc/dnsmasq.d/openshift-cluster.conf <<EOF

    local=/song.test.cnpc/

    address=/.apps.song.test.cnpc/11.11.233.133

    EOF

    若router为高可用部署,此ip应该为ha主机的ip 11.11.233.133

    启动dnsmasq服务

    每个master节点启动dnsmasq服务。命令如下:

    systemctl restart dnsmasq;

    systemctl enable dnsmasq;

    2.3.2 配置iptables

    每个master和node节点修改iptables规则。命令如下:

    cp /etc/sysconfig/iptables /etc/sysconfig/iptables.bak.$(date "+%Y%m%d%H%M%S");

    sed -i '/.*--dport 22 -j ACCEPT.*/a-A INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT' /etc/sysconfig/iptables;

    sed -i '/.*--dport 22 -j ACCEPT.*/a-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT' /etc/sysconfig/iptables;

    systemctl restart iptables;

    systemctl restart NetworkManager;

    2.3.3 配置各节点域名解析

    配置每个Node节点域名解析。命令如下:

    cat > /etc/dnsmasq.d/openshift-cluster-node.conf <<EOF

    server=11.11.233.125

    server=11.11.233.126

    server=11.11.233.134

    EOF

    此部署方式,若第一个节点down,dns轮询到第二个节点需等5秒,会导致应用通过dns访问中断

    三个ip分别为master节点ip

    systemctl restart dnsmasq;

    systemctl enable dnsmasq;

    2.3.4 测试DNS解析

    在每个node节点执行

    nslookup docker-registry-default.apps.jtdjnet.cnpc

     

    2.4 安装配置docker

    2.4.1 安装Docker

    在所有master、node,registry上安装Docker。命令如下:

    yum -y install docker;    #安装docker

    systemctl enable docker;

    cp /etc/sysconfig/docker /etc/sysconfig/docker.bak.$(date "+%Y%m%d%H%M%S")

    sed  -i s/".*OPTIONS=.*"/"OPTIONS='--selinux-enabled --log-driver=journald --insecure-registry 172.30.0.0/16  --insecure-registry registry.song.test.cnpc:5000'"/g /etc/sysconfig/docker;

    sed -i 's/registry.access.redhat.com/registry.song.test.cnpc:5000/g' /etc/sysconfig/docker

    echo "BLOCK_REGISTRY='--block-registry public --block-registry registry.access.redhat.com' ">>/etc/sysconfig/docker;

     

    2.4.2 配置docker存储

    POC和测试可跳过。生产环境必须配置

    磁盘名称先fdisk -l 看下,有的环境可能不叫sdb,叫vdb等

    cat<<EOF>/etc/sysconfig/docker-storage-setup

    DEVS=/dev/sdb

    VG=docker-vg

    SETUP_LVM_THIN_POOL=yes

    EOF

     

    docker-storage-setup

    设置完后查看配置更改是否成功

    cat /etc/sysconfig/docker-storage

    DOCKER_STORAGE_OPTIONS="--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/docker-docker-pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true "

     

    2.4.3 启动docker

    systemctl restart docker;

    docker info;

     

     

    返回值要有registry.song.test.cnpc:5000和172.30.0.0

    第3章 OpenShift 3安装

    l  在registry节点安装openshift的安装脚本

    yum -y install atomic-openshift-utils

    l  登录Master01节点执行安装。命令如下:

    cat > /etc/ansible/hosts <<EOF

    # Create an OSEv3 group that contains the masters, nodes, and etcd groups

    [OSEv3:children]

    masters

    nodes

    etcd

    lb

     

    # Set variables common for all OSEv3 hosts

    [OSEv3:vars]

    ansible_ssh_user=root

    • openshift_deployment_type=openshift-enterprise

     

    # uncomment the following to enable htpasswd authentication; defaults to DenyAllPasswordIdentityProvider

    • openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/htpasswd'}]
    • openshift_master_cluster_method=native
    • openshift_master_cluster_hostname=master.song.test.cnpc.cnpc
    • openshift_master_cluster_public_hostname=master.song.test.cnpc.cnpc

     

     

    • openshift_docker_options="--selinux-enabled --insecure-registry 172.30.0.0/16 --log-driver json-file --log-opt max-size=50M --log-opt max-file=3 --insecure-registry registry.song.test.cnpc.cnpc:5000 --add-registry registry.song.test.cnpc.cnpc:5000"
    • openshift_master_default_subdomain=apps.song.test.cnpc.cnpc

     

    • os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant'

     

    • openshift_hosted_router_selector='router=router'
    • openshift_hosted_router_replicas=2
    • openshift_hosted_registry_selector='infra=infra'

     

    • openshift_hosted_logging_deploy=true
    • openshift_logging_image_prefix=registry.song.test.cnpc.cnpc:5000/openshift3/
    • openshift_logging_image_version=v3.6
    • openshift_logging_public_master_url=master.song.test.cnpc.cnpc

     

    • openshift_hosted_metrics_deploy=true
    • openshift_metrics_image_prefix=registry.song.test.cnpc.cnpc:5000/openshift3/
    • openshift_metrics_image_version=v3.6
    • openshift_hosted_metrics_public_url=https://hawkular-metrics.apps.song.test.cnpc.cnpc/hawkular/metrics

     

    • openshift_cockpit_deployer_prefix=registry.song.test.cnpc.cnpc:5000/openshift3/
    • openshift_cockpit_deployer_version=v3.6

     

    • oreg_url=registry.song.test.cnpc.cnpc:5000/openshift3/ose-${component}:${version}
    • openshift_examples_modify_imagestreams=true

     

    • openshift_enable_service_catalog=false

     

    • openshift_disable_check="disk_availability,docker_image_availability,memory_availability,docker_storage,package_version,package_availability"

     

    # host group for masters

    [masters]

    djmast001.song.test.cnpc.cnpc  

    djmast002.song.test.cnpc.cnpc  

    djmast003.song.test.cnpc.cnpc

     

    [lb]

    djmlbt001.song.test.cnpc.cnpc

     

    # host group for etcd

    [etcd]

    djmast001.song.test.cnpc.cnpc  

    djmast002.song.test.cnpc.cnpc  

    djmast003.song.test.cnpc.cnpc

     

    # host group for nodes, includes region info

    [nodes]

    djmast001.song.test.cnpc.cnpc  

    djmast002.song.test.cnpc.cnpc  

    djmast003.song.test.cnpc.cnpc

    djinft001.song.test.cnpc.cnpc  openshift_node_labels="{'region': 'infra', 'zone': 'default', 'router': 'router'}"

    djinft002.song.test.cnpc.cnpc  openshift_node_labels="{'region': 'infra', 'zone': 'default', 'router': 'router'}"

    djinft003.song.test.cnpc.cnpc  openshift_node_labels="{'region': 'infra', 'zone': 'default', 'infra': 'infra'}"

    djnodt001.song.test.cnpc.cnpc  openshift_node_labels="{'region': 'primary', 'zone': 'zone1'}"

    djnodt002.song.test.cnpc.cnpc  openshift_node_labels="{'region': 'primary', 'zone': 'zone2'}"

    djnodt003.song.test.cnpc.cnpc  openshift_node_labels="{'region': 'primary', 'zone': 'zone3'}"

    djnodt004.song.test.cnpc.cnpc  openshift_node_labels="{'region': 'primary', 'zone': 'zone4'}"

    djnodt005.song.test.cnpc.cnpc  openshift_node_labels="{'region': 'primary', 'zone': 'zone5'}"

    EOF

     

    执行安装

    ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml;

     

    备用卸载命令:

    ansible-playbook  /usr/share/ansible/openshift-ansible/playbooks/adhoc/uninstall.yml;

    备注:在安装的过程中会出现下面问题,Wait for API to become available,这是在调用API接口时找不到对应文件,就会一直尝试连接

    l  重启sshd服务,命令如下:systemctl restart sshd

  • 相关阅读:
    谈屡面屡胜的面试经验
    同步异步和阻塞非阻塞的区别
    Ansible条件测试
    Ansible playbook基础组件介绍
    Ansible的基础元素和YAML介绍
    Ansible常见模块介绍
    Ansible介绍及安装部署
    Spark介绍及安装部署
    安装部署Apache Hadoop (完全分布式模式并且实现NameNode HA和ResourceManager HA)
    安装部署Apache Hadoop (本地模式和伪分布式)
  • 原文地址:https://www.cnblogs.com/leleyao/p/10838886.html
Copyright © 2020-2023  润新知