簡介
openshift是基於k8s的開源容器雲。
要求
系統環境:CentOS 7.5
搭建一個master節點,兩個node節點
注意:
openshift3 依賴docker的版本為1.13.1
openshift3.10支持的是ansible2.4.3.0以上2.8.X以下
保證各節點時間統一,可以統一向阿里雲時間服務器同步
准備工作
所有節點創建工作目錄:在根目錄下創建家目錄 mkdir /home && cd /home # 先關閉防火牆,后續為了安全再重新配置防火牆 # 查看防火牆的狀態 systemctl status firewalld # 關閉防火牆 systemctl stop firewalld # 關閉防火牆的自啟動 systemctl disable firewalld
配置說明
修改主機名
#master: #192.168.2.180 hostnamectl set-hostname master.example.com #node1: #192.168.2.181 hostnamectl set-hostname node1.example.com #node2: #192.168.2.182 hostnamectl set-hostname node2.example.com
域名映射
這3台主機(master,node1,node2)都需要在/etc/hosts文件中添加域名映射:
vim /etc/hosts
#添加如下內容 192.168.2.180 master.example.com 192.168.2.181 node1.example.com 192.168.2.182 node2.example.com
SSH相關
所有節點設置ssh連接超時:
sed -i 's/TMOUT=1800/#TMOUT=1800/g' /etc/profile source /etc/profile
阿里雲鏡像
所有節點切換鏡像源到阿里雲(如果設置過請忽略此步):
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
設置SELINUX
所有節點開啟selinux(openshift默認是推薦開啟改設置的):
sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config reboot
或者手動去修改:
# 查看selinux是否開啟 cat /etc/selinux/config # 編輯 vim /etc/selinux/config # 將SELINUX和SELINUXTYPE這兩個鍵對應的值修改成如下 SELINUX=enforcing SELINUXTYPE=targeted
安裝工具
所有節點安裝工具:
yum install -y wget git yum-utils net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct bash-completion.noarch bash-completion-extras.noarch java-1.8.0-openjdk-headless python-passlib NetworkManager
集群免密登錄
在master節點生成rsa密鑰,將生成好的密鑰拷貝至包括自己在內的節點:
ssh-keygen -f /root/.ssh/id_rsa -N ''
復制公鑰到其他節點
for host in master.example.com node1.example.com node2.example.com; do ssh-copy-id -i ~/.ssh/id_rsa.pub $host; done
按照提示進行操作:
安裝docker
所有節點安裝docker(如果是獨立部署nfs,則nfs節點不用按照docker):
yum install -y docker-1.13.1 && docker version
鏡像加速
所有節點安裝修改docker的鏡像加速為國內(提高下載速度):
vim /etc/docker/daemon.json # 添加內容如下 { "registry-mirrors": [ "https://registry.docker-cn.com" ] }
注意:一定要保證該文件符合 json 規范,否則 Docker 將不能啟動。之后重新啟動服務。
啟動Docker
所有節點啟動docker:
# 開機啟動
systemctl enable docker
# 啟動
systemctl start docker
# 重啟
systemctl restart docker
# 停止
systemctl stop docker
# 查看docker運行狀況
systemctl status docker
安裝ansible
在master節點安裝ansible擴展庫:
yum -y install epel-release
# 禁用擴展庫防止后續安裝出錯
sed -i -e "s/^enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo
# 安裝ansible和pyOpenSSL
yum install -y ansible pyOpenSSL
# 我事先下載好了這個rpm包(在線下載會很慢,你可以使用rz命令或者filezilla軟件上傳下載好的文件到/home目錄)
rpm -Uvh https://releases.ansible.com/ansible/rpm/release/epel-7-x86_64/ansible-2.6.4-1.el7.ans.noarch.rpm
# 或者執行以下命令升級ansible到當前這個包的版本
rpm -Uvh ansible-2.6.4-1.el7.ans.noarch.rpm
# 如果找不到rz命令則可以執行以下命令來安裝
yum install -y lrzsz
安裝openshift
# 在master節點下載openshift源碼:
git clone https://github.com/openshift/openshift-ansible
cd openshift-ansible git checkout release-3.10
# 在master節點修改軟件源(使用阿里雲的源提高軟件的安裝速度):
vim /home/openshift-ansible/roles/openshift_repos/templates/CentOS-OpenShift-Origin310.repo.j2
源文件內容如下:
[centos-openshift-origin310] name=CentOS OpenShift Origin baseurl=http://mirror.centos.org/centos/7/paas/x86_64/openshift-origin310/
enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
[centos-openshift-origin310-testing] name=CentOS OpenShift Origin Testing baseurl=http://buildlogs.centos.org/centos/7/paas/x86_64/openshift-origin310/
enabled={{ 1 if openshift_repos_enable_testing else 0 }} gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
[centos-openshift-origin310-debuginfo] name=CentOS OpenShift Origin DebugInfo baseurl=http://debuginfo.centos.org/centos/7/paas/x86_64/
enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
[centos-openshift-origin310-source] name=CentOS OpenShift Origin Source baseurl=http://vault.centos.org/centos/7/paas/Source/openshift-origin310/
enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
修改為:
[centos-openshift-origin310] name=CentOS OpenShift Origin baseurl=http://mirrors.aliyun.com/centos/7/paas/x86_64/openshift-origin310/
enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
[centos-openshift-origin310-testing] name=CentOS OpenShift Origin Testing baseurl=http://buildlogs.centos.org/centos/7/paas/x86_64/openshift-origin310/
enabled={{ 1 if openshift_repos_enable_testing else 0 }} gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
[centos-openshift-origin310-debuginfo] name=CentOS OpenShift Origin DebugInfo baseurl=http://debuginfo.centos.org/centos/7/paas/x86_64/
enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
[centos-openshift-origin310-source] name=CentOS OpenShift Origin Source baseurl=http://vault.centos.org/centos/7/paas/Source/openshift-origin310/
enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-PaaS
# 在master節點編寫inventory文件(備份):
mv -f /etc/ansible/hosts /etc/ansible/hosts.org
# 編輯ansible配置:
vim /etc/ansible/hosts
# 內容如下:
[OSEv3:children] masters nodes etcd nfs [OSEv3:vars] ansible_ssh_user=root openshift_deployment_type=origin #因采用虛擬機部署學習 配置此選項跳過主機硬件信息檢查 openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability openshift_master_identity_providers=[{'name':'htpasswd_auth','login':'true','challenge':'true','kind':'HTPasswdPasswordIdentityProvider',}] openshift_master_default_subdomain=apps.test.example.com openshift_deployment_type=origin os_firewall_use_firewalld=true [masters] master.example.com [etcd] master.example.com [nodes] master.example.com openshift_node_group_name='node-config-master' node1.example.com openshift_node_group_name='node-config-compute' node2.example.com openshift_node_group_name='node-config-compute' [nfs] master.example.com
# 在master節點安裝前檢查與環境設置(自動安裝腳本執行會花費很長時間):
ansible-playbook /home/openshift-ansible/playbooks/prerequisites.yml
# 在master節點正式安裝(自動安裝腳本執行會花費很長時間):
ansible-playbook /home/openshift-ansible/playbooks/deploy_cluster.yml
# 在master節點安裝完成后創建用戶:
# master節點下創建用戶dev htpasswd -bc /etc/origin/master/htpasswd dev dev
# 查看所有節點狀態:
# 所有節點安裝完成之后
oc get nodes
訪問openshift后台
訪問 https://openshift-master(或者IP):8443/console/
如果訪問不了,需要再你本地的瀏覽器的主機添加主機映射
C:\Windows\System32\drivers\etc下面的hosts文件中添加一條記錄如下:
-----------------------------------------------------------
192.168.2.180 master.example.com
-----------------------------------------------------------
出現登錄界面后輸入用戶名和密碼就是上一步創建的:dev/dev
卸載openshift
如果需要,可以通過這種方式卸載openshift。
ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/adhoc/uninstall.yml
以下內容來自官方的文檔:
最低硬件要求
生產級硬件要求
測試或樣本環境以最低要求運行。對於生產環境,以下建議適用:
master
在具有外部etcd的高可用性OKD群集中,主主機需要滿足最低要求,並且每1000個pod具有1個CPU核心和1.5 GB內存。因此,2000個容器的OKD群集中主主機的建議大小是2個CPU內核和16 GB RAM的最低要求,加上2個CPU內核和3 GB RAM,總共4個CPU內核和19 GB RAM。
有關性能指導,請參閱 OKD主控主機的建議實踐。
node
節點主機的大小取決於其工作負載的預期大小。作為OKD集群管理員,您需要計算預期的工作負載並為開銷增加約10%。對於生產環境,請分配足夠的資源,以便節點主機故障不會影響最大容量。
有關更多信息,請參閱 調整注意事項和群集限制。
存儲管理
DNS域名解析要求
在每個主機上的/etc/hosts文件中添加條目是不夠的。此文件不會復制到平台上運行的容器中。
OKD的關鍵組件在容器內運行,並使用以下過程進行名稱解析:
1.默認情況下,容器從其主機接收其DNS配置文件(/etc/resolv.conf)。
2.然后OKD將pod的第一個名稱服務器設置為節點的IP地址。
配置主機以使用DNS
確保環境中的每個主機都配置為從DNS服務器解析主機名。主機DNS解析的配置取決於是否啟用了DHCP。如果DHCP是:
-
禁用,然后將網絡接口配置為靜態,並將DNS名稱服務器添加到NetworkManager。
-
啟用后,NetworkManager調度腳本會根據DHCP配置自動配置DNS。
設置未與雲提供程序集成的群集時,必須正確設置節點的主機名。每個節點的主機名必須是可解析的,並且每個節點必須能夠到達每個其他節點。
個人的建議是搭建一套域名服務器,供容器雲做域名解析。
所需端口
OKD安裝使用iptables在每個主機上自動創建一組內部防火牆規則 。但是,如果您的網絡配置使用外部防火牆(例如基於硬件的防火牆),則必須確保基礎架構組件可以通過充當某些進程或服務的通信端點的特定端口相互通信。
確保OKD所需的以下端口在網絡上打開,並配置為允許主機之間的訪問。根據您的配置和使用情況,某些端口是可選的。
節點到節點

主節點

master到master

負載均衡器的外部
master對外

IAAS部署