centos7.6 使用 ansible 搭建 openshift 集群

centos7.6 使用 ansible 搭建 openshift 集群

实验环境: 4 台 centos7.6 主机,一台作为 ansible 机器,一台 master,两台 node 节点
ansible 192.168.116.1
master 192.168.116.8 帐号密码:root/321321
node01 192.168.116.9 帐号密码:root/321321
node02 192.168.116.10 帐号密码:root/321321
ansible 版本: ansible 2.9.1
openshift 版本: v3.11

确保所有机器的 yum 源都已配置好
确保所有机器已经开启 selinux

[root@master ~]# getenforce 
Enforcing

确保所有机器已经关闭 firewalld (不然需要自行开启一些端口,测试图方便直接关闭)

[root@master ~]# systemctl status firewalld
● firewalld.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)

master 要求 16Gb,node01 node02 要求 8 Gb 内存,磁盘 40 Gb 等。官方要求(内存较少时,可以修改 ansible playbook 代码,见本文最后面问题解决)

以下步骤都在 ansible 机器上执行
1 安装 ansible

yum install ansible

2 配置 /etc/hosts

[root@mapleaves ~]# cat /etc/hosts
192.168.116.8  master
192.168.116.9  node01
192.168.116.10 node02

3 配置 /etc/ansible/hosts 文件(运行 ansible-playbook 时用 -i 指定其它文件也可以)

[root@mapleaves ~]# cat /etc/ansible/hosts
# Create an OSEv3 group that contains the masters, nodes, and etcd groups
[OSEv3:children]
masters
nodes
etcd

# Set variables common for all OSEv3 hosts
[OSEv3:vars]
# SSH user, this user should allow ssh based auth without requiring a password
ansible_ssh_user=root
#openshift_deployment_type=openshift-enterprise
openshift_deployment_type=origin
openshift_release="3.11"
openshift_image_tag=v3.11
openshift_pkg_version=-3.11.0
openshift_use_openshift_sdn=true
# If ansible_ssh_user is not root, ansible_become must be set to true
#ansible_become=true
#containerized=false

# default selectors for router and registry services
# openshift_router_selector='node-role.kubernetes.io/infra=true'
# openshift_registry_selector='node-role.kubernetes.io/infra=true'

# uncomment the following to enable htpasswd authentication; defaults to DenyAllPasswordIdentityProvider
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]
#openshift_master_default_subdomain=ai.com
openshift_disable_check=memory_availability,disk_availability,docker_image_availability

os_sdn_network_plugin_name='redhat/openshift-ovs-networkpolicy'

openshift_master_cluster_method=native
openshift_master_cluster_hostname=master
openshift_master_cluster_public_hostname=master
# false
ansible_service_broker_install=false
openshift_enable_service_catalog=false
template_service_broker_install=false
openshift_logging_install_logging=false
enable_excluders=false
# registry passwd
#oreg_url=10.1.236.77:5000/openshift3/ose-${component}:${version}
#oreg_url=10.1.236.77:5000/openshift/origin-${component}:${version}
#openshift_examples_modify_imagestreams=true

# docker config
#openshift_docker_additional_registries=192.168.116.8:5000
#openshift_docker_insecure_registries=192.168.116.8:5000
#openshift_docker_blocked_registries
openshift_docker_options="--log-driver json-file --log-opt max-size=1M --log-opt max-file=3"

# openshift_cluster_monitoring_operator_install=false
# openshift_metrics_install_metrics=true
# openshift_enable_unsupported_configurations=True
#openshift_logging_es_nodeselector='node-role.kubernetes.io/infra: "true"'
#openshift_logging_kibana_nodeselector='node-role.kubernetes.io/infra: "true"'
# host group for masters

[masters]
master

# host group for etcd
[etcd]
master

# host group for nodes, includes region info
[nodes]
master ansible_host=192.168.116.8  openshift_node_group_name='node-config-master'
node01 ansible_host=192.168.116.9  openshift_node_group_name='node-config-compute'
node02 ansible_host=192.168.116.10 openshift_node_group_name='node-config-compute'
node01 ansible_host=192.168.116.9  openshift_node_group_name='node-config-infra'

[nodes:vars]
ansible_user=root
ansible_ssh_pass=321321

4 下载 openshift-ansible,github 地址

wget https://github.com/openshift/openshift-ansible/archive/release-3.11.zip
unzip release-3.11

5 执行 ansible playbook

cd openshift-ansible-release-3.11
ansible-playbook playbooks/prerequisites.yml
ansible-playbook playbooks/deploy_cluster.ym

6 执行成功后,创建登录帐号密码
首次新建用户密码
#htpasswd -cb /etc/origin/master/htpasswd admin admin123
添加用户密码
#htpasswd -b /etc/origin/master/htpasswd dev dev
以集群管理员登录
#oc login -u system:admin
给用户分配一个集群管理员角色
#oc adm policy add-cluster-role-to-user cluster-admin admin
访问登录即可
https://master:8443
帐号密码 admin/admin123
在这里插入图片描述
7 如果执行失败,想清理环境从新执行,可以执行 playbook uninstall.yml

ansible-playbook playbooks/adhoc/uninstall.yml 

问题以及解决方法:
1 执行到 Install Docer 出错,docker-ce conflict with docker1.13.1-58.git87f2fab.el7.centos,centos7.6 yum 源中默认含有 docker-ee 的源,openshift 3.11 默认会安装 docker engine(docker-ce 17.03 之前版本),安装 docker-ce 后再安装 docker engine 会引起冲突。解决方法:卸载掉 docker-ce
查看已安装的 docker-ce 版本(master/node01/node02 上执行)

[root@mapleaves ~]# rpm -qa | grep docker
docker-ce-cli-18.09.6-3.el7.x86_64
docker-ce-18.09.6-3.el7.x86_64

卸载相应的 docker-ce

ansible all -m shell -a "rpm -e docker-ce-cli-18.09.6-3.el7.x86_64"
ansible all -m shell -a "rpm -e docker-ce-cli-18.09.6-3.el7.x86_64"

2 缺少 /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 文件。解决方法:将 ansible 机器上的文件(或者网上找一份) copy 过去

ansible all -m copy -a "src=/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 dest=/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7"

3 执行到 Run health Checks (install) - EL,出错,memory_availability,因为 node01 node02 只有 4 Gb 内存。解决方法:修改 playbooks/openshift-checks/private/install.yml, 注释掉 - memory_availability。当然内存还是应该尽量满足,此处也是投机,会影响 openshift 体验。

- name: OpenShift Health Checks
  hosts: oo_etcd_to_config:oo_nodes_to_config:oo_masters_to_config
  any_errors_fatal: true
  roles:
  - openshift_health_checker
  vars:
  - r_openshift_health_checker_playbook_context: install
  post_tasks:
  - name: Run health checks (install) - EL
    when: ansible_distribution != "Fedora"
    action: openshift_health_check
    args:
      checks:
      - disk_availability
#      - memory_availability
      - package_availability
      - package_version
      - docker_image_availability
      - docker_storage

4 执行到 Wait for the ServiceMonitor CRD to be create 出错,报找不到 crd 对象,进入到 master 查看,

kb get crd -n openshift-monitoring

确实没看到 crd, 等待一段时间(具体时间忘了,发现出现 crd 了,猜测应该时执行时一些组件出问题了)
解决方法,发现 crd 后,ansible 机器重新执行 ansible-playbook playbooks/deploy_cluster.yml
5 报错一些镜像拉取出问题,由于网络问题,从 docker.io 拉取镜像确实容易出先网络问题。解决方法:出错后 ansible 重新执行 ansible-playbook playbooks/deploy_cluster.yml 直到成功,或者搭建私有仓库,上传 docker.io 中的镜像到其中,master node 分别从该仓库拉取镜像,然后 docker tag 镜像为 docker.io//😗*
可以参考文章第 11 步

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值