安裝前準備
這是筆者在 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=enforcing 與 SELINUXTYPE=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