安裝前準備

這是筆者在 Fedora 28/29 上面安裝 Openshift-ansible 的步驟,如果你在安裝使用 openshift 上有問題,歡迎一同討論 (意思就是我不一定能 100% 的解決你的問題 >”<“)。

來信指教:hi@okd.guide

系統需求

官方的文件規則:

  • Fedora 29 或是 RedHat 系列,CentOS 非 RedHat 官方版本(是社群分支,所以有很多東西要額外設定)
  • Ansible 2.6 (如果不採用 Ansible 安裝的話則非必要)
  • 最少 16GB 以上記憶體
  • 最小 4 核心 vCPU
  • 最小 40GB 的 /var 空間
  • 最小 1GB 的 /usr/local/bin 空間
  • 最小 1GB 的系統暫存空間
  • Master 若包含 etcd,最小需要 4 核心 CPU,2 核心以下會失敗。

系統需求,詳情可參考官方文件: https://docs.okd.io/latest/install/prerequisites.html 。

DNS

在建制環境時,需要支援 DNS,針對伺服器的域名與 IP 位址的對應需要將主機名稱加入 /etc/hosts,並且預設為使用 /etc/resolv.conf 內的快取伺服器。

在 OKD 1.2 版之後,有內建 dnsmasq 這套 DNS 伺服器來處理 DNS 的設置與解析。

如果你不想要自動建制 dnsmasq,請設定 NM_CONTROLLED 為 no。

Pod 會預設使用 Node 的 DNS 服務,預設 OKD 會在 Node 的機器上啟動 dnsmasa 並且使用埠 53,所以在 Node 的機器上不可以執行其他 DNS 伺服器軟體。

SELinux

要安裝 OpenShift 或是 OKD,都必須 啟用 SELinux,否則安裝會失敗。必須設定 SELINUX=enforcingSELINUXTYPE=targeted

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

域名

  • 主域名,例如:example.com
  • Master 主機的域名,例如:master1.example.com
  • Node 主機的域名,例如:node1.example.com

若是本機安裝測試,則不需準備上述資訊。

Ansible

目前 (2018-11-28) 若使用 Ansible 2.7 的版本來安裝 OpenShift 的話,會出現錯誤,所以要使用 2.6 的版本,
筆者使用的 Fedora 29 內建已經是 Ansible 2.7 所以不能用,您可以下載 2.6 的 RPM 來安裝。
如果您的 Linux 套件沒有 2.6 可以下載,您可以用 SRPM 的方式編譯一個 RPM 檔。

直接下載 RPM

Fedora 29,請下載 ansible-2.6.5-1.fc28.noarch.rpm:

https://kojipkgs.fedoraproject.org/packages/ansible/2.6.5/1.fc29/noarch/

Fedora 28,請下載 ansible-2.6.5-1.fc28.noarch.rpm 與 ansible-python3-2.6.5-1.fc28.noarch.rpm:

https://kojipkgs.fedoraproject.org/packages/ansible/2.6.5/1.fc28/noarch/

下載用 rpm 安裝起來就可以了,

rpm -ivh ansible-2.6*.rpm

安裝相依套件:

dnf install python3-PyYAML python3-jinja2 python3-jmespath python3-paramiko

編譯 SRPM:

如果您需要自行編譯 Ansible,可以利用 SRPM 檔,請透下方連結取得 Ansible 2.6 的 SRPM 檔:

https://kojipkgs.fedoraproject.org//packages/ansible/2.6.5/1.fc29/src/ansible-2.6.5-1.fc29.src.rpm

編譯 SRPM 的方式:

# dnf install make
# dnf install rpm-build
# rpm -ivh ansible-2.6.5-1.fc29.src.rpm
# rpmbuild -bb ~/rpmbuild/SPECS/ansible.spec
(編譯過前可可能需要安裝一些相依套件,請用 dnf 安裝即可,都是一些 python 套件)
# dnf install asciidoc python3-PyYAML python3-boto3 python3-botocore python3-devel python3-jinja2 python3-mock python3-nose python3-packaging python3-paramiko python3-passlib python3-pexpect python3-pytest python3-pytest-mock python3-pytest-xdist python3-sphinx python3-sphinx-theme-alabaster python3-winrm

編譯完成後就可以進行安裝 ansible-2.6.5 與 ansible-python3-2.6.5:

# cd ~/rpmbuild/RPMS/noarch/
# rpm -ivh ansible-2.6.5-1.fc29.noarch.rpm ansible-python3-2.6.5-1.fc28.noarch.rpm

防火牆

所需要的埠

OKD 的 Master 與 Node 之間有很多埠需要開啟,下面列處幾個範例,若您使用 Openshift-ansible 來安裝的話,不需要自己修改防火牆規則,Ansible 會幫你修改。

詳細列表請參考:https://docs.okd.io/latest/install/prerequisites.html#required-ports

Node 與 Node 之間:

協定 說明
UDP 4789 兩個 Node 之間的 SDN 溝通使用

Node 與 Master 之間:

協定 說明
TCP/UDP 53 或 8053 DNS 溝通
UDP 4789 SDN 溝通使用
TCP 443 或 8443 API 溝通使用

Master 與 Master 之間:

協定 說明
TCP/UDP 53 或 8053 DNS 溝通
TCP/UDP 2049 NFS
TCP 2379 etcd
TCP 2380 etcd
UDP 4789 SND

設定 Firewalld

預設來說 Ansible 會幫你調整,此步驟為非必要選項,給需要特別設定的人參考。

設定 firewall, openshift-ansible/inventory/[你選用的檔]:

[OSEv3:vars]
os_firewall_use_firewalld=True

Docker

我後來發現 Openshift-ansbile 在 Fedora 28 上面會自動幫你安裝 Docker,如果裝不上去的話,你在參考下方的操作說明來自型安裝。

RHEL 系統

直接使用 yum 安裝 docker 即可:

# yum install docker

Fedora 系統

要安裝 docker-ce:

dnf remove docker \
docker-client docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

dnf -y install dnf-plugins-core

dnf config-manager \
    --add-repo \
    https://download.docker.com/linux/fedora/docker-ce.repo

dnf install docker-ce docker-ce-cli containerd.io

CentOS 系統

在 CentOS 系統中有另一個套件也叫 docker,記得要裝 docker-ce 才對:

yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce

設定 –insecure-registry

使用 Openshift-ansible 安裝時,此步驟為非必要。

RHEL/CentOS 系統,請修改 /etc/sysconfig/docker,Debian 系統請修改 /etc/default/docker 加入 --insecure-registry 172.30.0.0/16

OPTIONS='--selinux-enabled --log-driver=journald --live-restore --insecure-registry 172.30.0.0/16'

修改完後請重新啟動 docker,並用 ps 指令確認已成功。

# ps axu | grep docker

/usr/bin/dockerd-current ...... --insecure-registry 172.30.0.0/16 ......

錯誤 quay.io/coreos/etcd:v3.2.22

如果你出現類似的錯誤,有兩個解決方法,建議先使用第一種:

Details:  check "docker_image_availability":
   One or more required container images are not available:
       quay.io/coreos/etcd:v3.2.22
   Checked with: skopeo inspect [--tls-verify=false] [--creds=<user>:<pass>] docker://<registry>/<image>

方法一:

請修改 Openshift-ansible 的 inventory 檔,先讓系統跳過檢查,我推測可能是什麼設定沒有完成前 OKD 會抓不到這個 Image,先等 playbook 跑完之後,是可以正常抓到此映像檔:

cd openshift-ansible
vi inventory/hosts.local

...
openshift_disable_check=docker_image_availability

方法二:

請先把此映像檔拉下來即可。

docker pull quay.io/coreos/etcd:v3.2.22

參考完此文章之後,就可以準開始安裝

文章資訊
slug:prepare-install
title:安裝 OpenShift 之前的準備工作
tags:install,openshift,okd
categories:openshift
thumbnail:banner-1.jpg
最後修改日期: 2019-02-21

作者