iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 4
0
自我挑戰組

從 RedHat OpenShift 社群版 OKD 看 Kubernetes系列 第 4

Day 04 :部署 OpenShift 3.11(OKD)(上) - 事前準備工作

  • 分享至 

  • xImage
  •  

本篇將介紹透過上上一篇所提到的 OpenShift Ansible 來快速部署,OKD (The Origin Community Distribution of Kubernetes) 的 release-3.11 版本,我們透過實體 裸機機器(Bare-metal Server) 來進行部署環境。

裸機基本需求

請參考官方的文件規則


實驗節點資訊

本次安裝作業系統採用 CentOS 7,測試環境為實體主機:

IP Address Hostname Sepc Remark Hard Disk Drive
192.168.101.130 paas01 8 core/ 8G Master node SSD 256 GB
192.168.101.131 paas02 8 core/ 8G Infra node HDD 1TB
192.168.101.132 paas03 8 core/ 8G AP node HDD 1TB
192.168.101.133 paas04 8 core/ 8G AP node HDD 500 GB
192.168.101.134 paas05 8 core/ 8G AP node HDD 500 GB

ISO: Centos-7-x86_64-Minimal-1810.iso

A. 事前準備

安裝前需要確認以下幾個項目:

  • 所有節點的網路之間可以互相溝通。
  • 部署節點對其他節點不需要 SSH 密碼即可登入。
  • 所有節點都擁有 root 權限,並且不需要輸入密碼。
  • 所有節點需要安裝 Python,CentOS 預設應該都會裝。
  • 所有節點需要設定 /etc/hosts 解析到所有主機。
  • 部署節點(Basion主機) 需要安裝 Ansible。

建議部署這邊可以透過一台在同網域的 Basion主機 直接操作連線至多台主機環境

設置主機名

為方便識別裸機機器對應名稱,這邊修改每台實體機 hostname

#  Master
$ hostnamectl set-hostname paas01.paas.domain.tw
#  Infra node
$ hostnamectl set-hostname paas02.paas.domain.tw
#  AP node
$ hostnamectl set-hostname paas01.paas.domain.tw
$ hostnamectl set-hostname paas01.paas.domain.tw
$ hostnamectl set-hostname paas01.paas.domain.tw

Network Setting 並設置 「DNS Server」

配置 CentOS 系統網路,透過CLI設定配置當前實體機網卡(ifcfg-xxx):

# ifcfg-em1 是網卡名稱,如果是 eth0 修改對應網卡 ifcfg-eth0

$ vim /etc/sysconfig/network-scripts/ifcfg-em1

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=em1
UUID=7c200433-ead4-43e3-a571-0dfeb0515a96
DEVICE=em1
ONBOOT=yes
IPADDR=192.168.101.XXX    
PREFIX=24
GATEWAY=192.168.101.254
DNS1=8.8.8.8
IPV6_PRIVACY=no
DOMAIN=paas.domain.tw

設定完後重啟 NetworkManager

$ systemctl restart NetworkManager
$ cat /etc/resolv.conf 

search paas.domain.tw # restart後會增加cluster.local
nameserver 8.8.8.8

Bastion node 設定 (節點設置免 SSH 密碼)

  • 在部署環境建議透過 Bastion 的方式進行 Cluster部署,Bastion 可以是一台Notebook 也可以是一台固定的機器,最主要我們會透過Bastion機對整個 Cluster進行部署及操作
  • 在接下來的部署,我們會統一在 Bastion 機上面進行 Inventory 撰寫以及透過ansible 建置 Openshift
  • 在撒 ansible playbook 前,因為 ansible 會透過 ssh 對 cluster machine 進行指令操作,所以我們要先對 cluster nodes 進行 ssh 免密碼登入設定
$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:YWid3TtIfGyFM8MsaZf1YYp9RcgC60plBJrhPNqEEDk root@basion.paas.domain.tw
The key's randomart image is:
+---[RSA 2048]----+
|  oo  . ..o= =o=o|
|  E. + * =++&.=.o|
|   .. X =.B+=B ..|
|     = o * + ..  |
|    . . S o o    |
|       . .   .   |
|        .        |
|                 |
|                 |
+----[SHA256]-----+

...
...
$ for seq in {1..5};
do
    ssh-copy-id root@paas0$seq.paas.domain.tw; \
    echo paas0$seq;\
done

#test ssh connection

$ for seq in {1..5};
do
    ssh root@paas0$seq.paas.domain.tw echo paas0$seq; \
done

檢查 SELinux 是否開啟 (Enforcing SELinux)

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

修改方式如下:

$ cat /etc/selinux/config
$ enforcing
$ seenforcing
$ selinuxenabled
$ sestatus


$ cat /etc/selinux/config

# 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 three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

---


$ for seq in {1..5};
do
    ssh root@paas0$seq.paas.domain.tw sestatus; \
    echo paas0$seq;\
done

配置 DNS 設定

此次實驗請於 Domain 提供平台,設置「區域檔紀錄」類型 A 配置每個節點如下配置:

IP Address Hostname Type TTL
192.168.101.130 paas01.paas.domain.tw A 3600
192.168.101.131 paas02.paas.domain.tw A 3600
192.168.101.132 paas03.paas.domain.tw A 3600
192.168.101.133 paas04.paas.domain.tw A 3600
192.168.101.134 paas05.paas.domain.tw A 3600
192.168.101.131 *.apps.paas.domain.tw A 3600
192.168.101.130 webconsole.paas.domain.tw A 3600

remark: 部分DNS service 有提供設定wildcard domain 的服務,如果沒有提供的話,建議之後在上面透過Route 進出的apps,可以透過正向表列方式將domain指向 infra node

安裝依賴套件 (Install dependency packages)

$ for seq in {1..5};
do
    ssh root@paas0$seq.paas.domain.tw  yum install wget git net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct bash-completion.noarch bash-completion-extras.noarch python-passlib NetworkManager -y
    echo paas0$seq;\
done

安裝 Docker (Install docker)

$ for seq in {1..5};
do
ssh root@paas0$seq.paas.domain.tw yum install docker-1.13.1 -y;
ssh root@paas0$seq.paas.domain.tw echo pupaas0$seq done;
done


$ for seq in {1..5};
do
ssh root@paas0$seq.paas.domain.tw systemctl enable docker;
ssh root@paas0$seq.paas.domain.tw systemctl restart docker ;
ssh root@paas0$seq.paas.domain.tw echo pupaas0$seq done;
done

$ for seq in {1..5};
do
ssh root@paas0$seq.paas.domain.tw docker info | grep Version;
ssh root@paas0$seq.paas.domain.tw echo pupaas0$seq done;
done

安裝 Ansible

此部分於部署節點 (此實驗採用 Master節點) 啟用 EPEL 倉庫以安裝 Ansible

# 全局禁用EPEL套件庫,以便在安裝的後續步驟中不會有狀況
$ yum -y install epel-release;
$ yum -y --enablerepo=epel install ansible pyOpenSSL;

通過以上配置,及完成各個節點的事前配置


相關參考連結


上一篇
Day 03:Ansible與Bastion跳板機緊密的關係
下一篇
Day 05 :部署 OpenShift 3.11(OKD)(下) - 安裝
系列文
從 RedHat OpenShift 社群版 OKD 看 Kubernetes17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言