openshift 3.11多主節(jié)點安裝

安裝可以看這里
作者:qq_dao
來源:CSDN
原文:https://blog.csdn.net/qq_16240085/article/details/86004707

我這里基本只寫坑和原文檔的錯誤

Openshift OKD v3.11 高級安裝

安裝注意事項
同事說紅帽的開發(fā)基本是一坨便便唱较,舉例說明就是foreman黄鳍,紅帽對應的就是紅帽衛(wèi)星這個產品介劫,本來foreman很簡潔采驻,紅帽在上面加了一堆包管理的東西傲武,于是弄的臃腫不堪峰尝,安裝的時候要加一堆變量開關第献,終于紅帽自己也覺得無法維護了钢坦,于是又搞出一個叫叉車的項目,把所有的安裝命令行參數(shù)用ansible包裝一下比搭,可維護性一下變的很差冠跷,,我從openshift的安裝看身诺,同樣如此蜜托,尤其是bug不少,下面會提到霉赡,橄务,據說openshift 4.0會用k8s on k8s的安裝方法,不知道怎么樣穴亏,看過演示蜂挪,類似回到最初幾個命令行搞定的方案了,不知道以后會不會再重新包裹一堆參數(shù)嗓化,變成一坨便便棠涮。

---------------引用分割線-------------
1.操作系統(tǒng)語言不能是中文
2.infra節(jié)點會自動部署router,lb不要放在infra節(jié)點上刺覆,所以80端口不能沖突
3.如果web console訪問端口改成443,lb不能放一起,端口沖突
4.centos 從7.4 開始正式支持overlay2严肪,最好安裝最新版,我是安裝的7.6
5.開啟selinux隅津,這個是必須的诬垂,開啟networkmanager。這個也是必須的
6.保證能聯(lián)網伦仍。结窘。。
7.如果lb和master在一個節(jié)點上充蓝,會有8443端口已被占用的問題隧枫,建議安裝時lb不要放在master節(jié)點上
8.如果etcd放在master節(jié)點上喉磁,會以靜態(tài)pod形式啟動。如果放在node節(jié)點上官脓,會以系統(tǒng)服務的形式啟動协怒。我在安裝過程中,一個etcd放在了master上卑笨,另一個放在了node上孕暇,導致etcd啟動失敗。建議安裝時etcd要么全放在master節(jié)點上,要么全放在node節(jié)點上。
9.我在安裝過程中盆昙,直接安裝了帶有nfs持久存儲的監(jiān)控,需要提前安裝java-1.8.0-openjdk-headless python-passlib座舍,這一點官網沒有提及,不提前裝安裝會報錯陨帆。
10.docker 啟用配置參數(shù)–selinux-enabled=false 曲秉,但是操作系統(tǒng)selinux必須開啟,否則安裝報錯
---------------以上引用分割線-------------
11.個人感覺lb 沒啥必要疲牵,如果有需求承二,自己弄個nginx或者haproxy吧,不過可以把nfs和lb放到一個機器上瑰步,這樣就不浪費了

12.我的環(huán)境是7個虛擬機矢洲,橋接了萬兆網卡對接真實環(huán)境的ceph存儲璧眠,雖然openshift 官方推薦glusterfs做持久化存儲
主要是多主機掛載的問題缩焦,我在后面也確實遇到不少持久化存儲在ceph上掛載的問題,不過cephfs 支持rmw责静,就好多了袁滥,
不過不在openshift的官方支持里面,沒太敢用灾螃,目前基本是nfs+ceph混合用题翻,nfs據說有性能問題,主要是做docker倉庫的時候
因此也沒怎么用腰鬼,主要還是根據需求嵌赠,切換ceph 和nfs,其實我的nfs也是跑在ceph上面的一個虛擬機熄赡,其實性能差別不大姜挺,尤其是用于開發(fā),因此也沒什么關系
13.openshift的ansible安裝有bug彼硫,主要是網絡組件炊豪,基本都是dns導致的各種問題
最好在安裝過程中 將origin-upstream-dns.conf 里面寫上外部dns的地址凌箕,用ansible 推幾遍,其實安裝是依賴外部dns的
但是這個ansible寫的規(guī)則有問題词渤,會自己在本機起dnsmasq牵舱,里面又不寫外部dns地址,還會修改本機使用本機自己的dns缺虐,結果就導致sdn出問題芜壁,外部dns無法解析,另外雙網卡的機器尤其愛出問題高氮,需要在安裝配置文件里寫死本機準備給openshift使用的ip沿盅。

---------------引用分割線-------------

官方建議集群所有主機的硬件規(guī)格和系統(tǒng)級要求。

master系統(tǒng)要求
最低操作系統(tǒng)版本:Fedora 21纫溃、CentOS 7.4腰涧、RHEL 7.4、RHEL Atomic Host 7.4.5紊浩。
最低4 vCPU窖铡。
最小16GB RAM。
包含/var/的文件系統(tǒng)最小40GB硬盤空間坊谁。
包含/usr/local/bin/的文件系統(tǒng)最小1GB硬盤空間费彼。
包含系統(tǒng)臨時目錄的文件系統(tǒng)最小1GB硬盤空間。
Etcd和Master在同一節(jié)點的口芍,需要至少4核箍铲,2核系統(tǒng)將無法工作。

node系統(tǒng)要求
最低操作系統(tǒng)版本:Fedora 21鬓椭、CentOS 7.4颠猴、RHEL 7.4、RHEL Atomic Host 7.4.5小染。
NetworkManager 1.0或更新翘瓮。
最低1 vCPU。
最小8GB RAM裤翩。
包含/var/的文件系統(tǒng)最小15GB硬盤空間资盅。
包含/usr/local/bin/的文件系統(tǒng)最小1GB硬盤空間。
包含系統(tǒng)臨時目錄的文件系統(tǒng)最小1GB硬盤空間踊赠。
額外至少15GB未分配空間呵扛,用于Docker存儲。

etcd系統(tǒng)要求
最小20GB硬盤空間存儲etcd數(shù)據筐带。

配置國內yum源今穿,安裝指定版本ansible 并做基礎配置

yum install wget -y
cd /etc/yum.repos.d/ && mkdir repo_bak && mv *.repo repo_bak/
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all && yum makecache
yum -y install epel-release

yum install python-pip -y
pip install --upgrade setuptools

wget https://releases.ansible.com/ansible/ansible-2.6.5.tar.gz
tar fxz ansible-2.6.5.tar.gz && cd ansible-2.6.5
python setup.py install

配置/etc/hosts
10.10.11.10 openshift1
10.10.11.11 openshift2
10.10.11.12 openshift3
10.10.11.13 openshift4
10.10.11.14 openshift5

ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub openshift{1,2,3,4,5}
---------------以上引用分割線-------------

 1  yum install wget git net-tools bind-utils yum-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct
    2  ssh-keygen
    3  ssh-copy-id localhost
    4  yum -y install     https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    5  sed -i -e "s/^enabled=1/enabled=0/" /etc/yum.repos.d/epel.repo
    6  yum -y --enablerepo=epel install ansible pyOpenSSL
    7  cd ~
    8  git clone https://github.com/openshift/openshift-ansible
    9  cd openshift-ansible
   10  git checkout release-3.11
   12  yum install docker-1.13.1
cat okd.hosts
git clone https://github.com/openshift/openshift-ansible && cd ~/openshift-ansible && git checkout release-3.11

配置centos-openshift源并同步到所有主機

準備 yum源、NetworkManager烫堤、prerequisites.yml
所有機器上安裝 centos 的openshift官方源,啟用networkmanager

ansible openshift -a "yum install NetworkManager centos-release-openshift-origin311.noarch -y && systemctl start NetworkManager && systemctl enable NetworkManager "
sed -i ‘s/SELINUX=disabled/SELINUX=enforcing/’ /etc/selinux/config
ansible-playbook -i okd.hosts openshift-ansible/playbooks/prerequisites.yml

注意修改 /etc/yum/yum.conf keepcache=1,因為確實很少一次成功的荣赶,保存rpm cache 有助于節(jié)省時間
在上面的預部署通過后凤价,就可以跑下面的部署playbook了
ansible-playbook -i okd.hosts openshift-ansible/playbooks/deploy_cluster.yml

---------------引用分割線-------------
在centos7.2系統(tǒng)中網絡特殊配置

cni網絡插件配置文件–在centos7.2中沒有成功,導致node NotReady拔创,手動拷貝該文件即可

cat resolv.j2
##nameserver updated by /etc/NetworkManager/dispatcher.d/99-origin-dns.sh
##Generated by NetworkManager
search cluster.local
nameserver {{ inventory_hostname }}

配置宿主機節(jié)點的nameserver為本機IP利诺,使得宿主機可以使用本機的dnsmasq服務解析。且該文件在生成后會自動復制到/etc/origin/node/resolv.conf剩燥,該文件在pod啟動時會被添加為pod中的/etc/resolv.conf

80-openshift-network.conf 文件刪除網絡有問題慢逾,暫時注釋
編輯 roles/openshift_sdn/files/sdn.yaml
注釋: # rm -Rf /etc/cni/net.d/80-openshift-network.conf

#cat /etc/cni/net.d/80-openshift-network.conf
{
“cniVersion”: “0.2.0”,
“name”: “openshift-sdn”,
“type”: “openshift-sdn”
}

cat origin-dns.conf
no-resolv
domain-needed
no-negcache
max-cache-ttl=1
enable-dbus
dns-forward-max=10000
cache-size=10000
bind-dynamic
min-port=1024
except-interface=lo
#End of config
cat origin-upstream-dns.conf
#內網自建dns服務器
server=10.10.100.100

拷貝沒有生成的文件
ansible openshift -m template -a “src=resolv.j2 dest=/etc/resolv.conf”
ansible openshift -a “/bin/cp /etc/resolv.conf /etc/origin/node/resolv.conf”
ansible openshift -m copy -a “src=origin-upstream-dns.conf dest=/etc/dnsmasq.d/”
ansible openshift -m copy -a “src=origin-dns.conf dest=/etc/dnsmasq.d/”
ansible openshift -m copy -a “src=80-openshift-network.conf dest=/etc/cni/net.d/80-openshift-network.conf”

---------------以上引用分割線-------------
上面這段我簡述一下把,灭红,這個也是我遇到最多的問題侣滩,有不少坑,
單節(jié)點基本一次通過变擒,多節(jié)點在這個上面有很多坑
基本故障
1.node 狀態(tài)noready君珠,基本是證書和網絡問題,嚴格檢查hostname 和 /etc/hosts 是否一致
網絡問題會導致N多問題娇斑,主要是dns策添,sdn等問題
首先是ansible 會調用NetworkManager,更改本地resolv.conf 為當前主機毫缆,同時使用dnsmasq來做dns指向
但問題是ansible的playbook寫的有bug唯竹,沒有內部,結果導致出現(xiàn)沒有內部dns解析苦丁,最后導致外網都無法訪問
自然很多docker鏡像都拉不下浸颓,結果導致安裝失敗
解決方法,
自己創(chuàng)建 origin-upstream-dns.conf 旺拉,里面寫上自己的內部dns地址产上,或者運營商給的dns,讓你的機器能出去拉鏡像

cat /etc/dnsmasq.d/origin-upstream-dns.conf
server=192.168.1.1

因為這個會被ansible更改账阻,所以最好在安裝的過程中多跑幾次蒂秘,防止被改寫

然后是如果使用了雙網卡泽本,必須在配置文件里指定用于openshift的網絡淘太,否則依然會出網絡問題,
這個可以看我貼的配置文件

我的配置文件

# Create an OSEv3 group that contains the masters, nodes, and etcd groups
[OSEv3:children]
masters
nodes
etcd
#new_nodes

lb

# 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=origin
openshift_image_tag=v3.11
# If ansible_ssh_user is not root, ansible_become must be set to true
ansible_become=true


## 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_disable_check=memory_availability,disk_availability,docker_image_availability

os_sdn_network_plugin_name=redhat/openshift-ovs-multitenant

openshift_master_api_port=8443
openshift_master_console_port=8443
openshift_hosted_router_replicas=1
openshift_hosted_registry_replicas=1
openshift_master_cluster_hostname=openshift-cluster.example.com
openshift_master_cluster_public_hostname=openshift-cluster.example.com
openshift_master_default_subdomain=okd.example.com

openshift_master_cluster_method=native
##openshift_public_ip=
## false
##ansible_service_broker_install=false
##openshift_enable_service_catalog=false
##template_service_broker_install=false
##openshift_logging_install_logging=false

# cert
openshift_hosted_registry_cert_expire_days=3650
openshift_ca_cert_expire_days=3650
openshift_node_cert_expire_days=3650
openshift_master_cert_expire_days=3650
etcd_ca_default_days=3650
openshift_master_overwrite_named_certificates=true


## registry passwd
##oreg_url=172.16.37.12:5000/openshift3/ose-${component}:${version}
##openshift_examples_modify_imagestreams=true

## docker config
##openshift_docker_additional_registries=172.16.37.12:5000,172.30.0.0/16
##openshift_docker_insecure_registries=172.16.37.12:5000,172.30.0.0/16
##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
openshift_master_bootstrap_auto_approve=true
openshift_set_node_ip=True

[masters]
openshift-master01.example.com
openshift-master02.example.com
openshift-master03.example.com
[etcd]
openshift-master01.example.com
openshift-master02.example.com
openshift-master03.example.com
[nodes]

openshift-master01.example.com openshift_ip=10.52.17.150 openshift_node_group_name='node-config-master'
openshift-master02.example.com  openshift_ip=10.52.17.155 openshift_node_group_name='node-config-master'
openshift-master03.example.com  openshift_ip=10.52.17.156 openshift_node_group_name='node-config-master'
openshift-node01.example.com openshift_ip=10.52.17.151 openshift_node_group_name='node-config-infra'
openshift-node02.example.com openshift_ip=10.52.17.152 openshift_node_group_name='node-config-infra'
openshift-node03.example.com openshift_ip=10.52.17.153 openshift_node_group_name='node-config-infra'
[lb]
openshift-lb.example.com openshift_ip=10.52.17.154

另外還有一個dns的配置
將這些貼到每個機器的/etc/hosts里面规丽,另外如果有l(wèi)b蒲牧,就順便也來個nfs把,直接加個nfs的字段赌莺,然后配置nfs的主機和lb為一個冰抢,
這樣不用弄glusterfs,紅帽是推薦使用glusterfs的艘狭,主要還是做pv的時候挎扰,ceph不能做rwm類型的pv翠订,容易導致切換鏡像的時候,pod起不來遵倦,我在后期使用中尽超,用的是ceph和nfs混合使用,雖然看k8s支持cephfs做rwm類型的存儲梧躺,但是畢竟還沒有出現(xiàn)在官方的文檔里正式支持似谁。看最近要出的openshift 4.0是不是能支持掠哥,另外證書這段巩踏,最好還是用企業(yè)自己ca證書簽署一下,當然最好能用可信的ca做認證续搀,否則后期做各種ci/cd都有額外的步驟塞琼,不方便,不過熟了其實也沒什么禁舷。

10.52.17.150 openshift-master01.example.com
10.52.17.155 openshift-master02.example.com
10.52.17.156 openshift-master03.example.com
10.52.17.151 openshift-node01.example.com
10.52.17.152 openshift-node02.example.com
10.52.17.153 openshift-node03.example.com
10.52.17.154 openshift-lb.example.com
10.52.17.154 openshift-cluster.example.com

集群成功標志:所有容器STATUS 為 Running

oc get pod --all-namespaces

集群卸載(如有必要屈梁,默認不卸載docker,如果需要查看文件內容)

ansible-playbook -i okd.hosts openshift-ansible/playbooks/adhoc/uninstall.yml

驗證

首次新建用戶密碼
htpasswd -cb /etc/origin/master/htpasswd admin admin
添加用戶密碼
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://paas.xxxxxx.com:8443

參考文獻:
https://docs.okd.io/3.11/install/configuring_inventory_file.html
https://docs.okd.io/3.11/install/example_inventories.html


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末榛了,一起剝皮案震驚了整個濱河市在讶,隨后出現(xiàn)的幾起案子霜大,更是在濱河造成了極大的恐慌构哺,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件战坤,死亡現(xiàn)場離奇詭異曙强,居然都是意外死亡,警方通過查閱死者的電腦和手機途茫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門碟嘴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人囊卜,你說我怎么就攤上這事娜扇。” “怎么了栅组?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵雀瓢,是天一觀的道長。 經常有香客問我玉掸,道長刃麸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任司浪,我火速辦了婚禮泊业,結果婚禮上把沼,老公的妹妹穿的比我還像新娘。我一直安慰自己吁伺,他們只是感情好智政,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著箱蝠,像睡著了一般续捂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宦搬,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天牙瓢,我揣著相機與錄音,去河邊找鬼间校。 笑死矾克,一個胖子當著我的面吹牛,可吹牛的內容都是我干的憔足。 我是一名探鬼主播胁附,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼滓彰!你這毒婦竟也來了控妻?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤揭绑,失蹤者是張志新(化名)和其女友劉穎弓候,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體他匪,經...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡菇存,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了邦蜜。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片依鸥。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悼沈,靈堂內的尸體忽然破棺而出贱迟,到底是詐尸還是另有隱情,我是刑警寧澤井辆,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布关筒,位于F島的核電站,受9級特大地震影響杯缺,放射性物質發(fā)生泄漏。R本人自食惡果不足惜睡榆,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一萍肆、第九天 我趴在偏房一處隱蔽的房頂上張望袍榆。 院中可真熱鬧,春花似錦塘揣、人聲如沸包雀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽才写。三九已至,卻和暖如春奖蔓,著一層夾襖步出監(jiān)牢的瞬間赞草,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工吆鹤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厨疙,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓疑务,卻偏偏與公主長得像沾凄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子知允,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容