本文以离线方式安装IBM Cloud Pak for Business Automation所需的OpenShift环境。
请参考下面官方链接获得详细信息。
https://docs.openshift.com/container-platform/4.7/installing/installing_bare_metal/installing-bare-metal.html
每个OCP集群必须满足如下最小需求。
Machine | OS | CPU | Memory | Disk Space |
Bootstrap | Core OS | 4 | 16 GB | 120 GB |
Master | Core OS | 4 | 16 GB | 120 GB |
Compute | Core OS or RHEL | 2 | 8 GB | 120 GB |
最小OCP集群需包含下面的机器:
l 一台Bootstrap机器,安装OCP完成后可以删除
l 三台 master (or control plane) 机器
l 至少一台compute (worker) 机器
l Bastion 机器(俗称堡垒机)。为了离线安装,它必须能访问外网把所需的镜像从quay.io下载到本地镜像服务器。
在OCP安装过从中我们使用了如下的机器。
IP Address | Hostname | OS | Note |
182.18.18.65 | bastion | RHEL 7.9 | 堡垒机(访问外网,访问Master/Worker, 部署HAProxy,部署本地镜像服务器) |
182.18.18.66 | bootstrap | Core OS 4.8 | |
182.18.18.67 | master01 | Core OS 4.8 | |
182.18.18.68 | master02 | Core OS 4.8 | |
182.18.18.69 | master03 | Core OS 4.8 | |
182.18.18.70 | worker01 | Core OS 4.8 | |
182.18.18.71 | worker02 | Core OS 4.8 | |
182.18.18.72 | worker03 | Core OS 4.8 | |
182.18.18.73 | worker04 | Core OS 4.8 | |
182.18.18.74 | worker05 | Core OS 4.8 | |
182.18.18.75 | worker06 | Core OS 4.8 | |
182.18.18.76 | worker07 | Core OS 4.8 | |
182.18.18.77 | worker08 | Core OS 4.8 |
参考下面官方链接获得详细信息。
https://docs.openshift.com/container-platform/4.2/installing/install_config/installing-restricted-networks-preparations.html
也可以参考下面官方链接获得如何从私有离线镜像服务器安装OCP的详细信息。
https://docs.openshift.com/container-platform/4.6/installing/installing_bare_metal/installing-restricted-networks-bare-metal.html
从https://mirror.openshift.com/pub/openshift-v4/clients/ocp/ 下载openshift-client-linux-
把OCP 命令行工具下载到堡垒机的任意路径(如/root/temp),解压并把oc和kubectl文件移动至/usr/bin.
wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.8.14/openshift-client-linux-4.8.14.tar.gz tar zxvf openshift-client-linux-4.8.14.tar.gz mv kubectl /usr/bin mv oc /usr/bin |
使用下面命令确认oc命令已正确安装。
oc version |
安装所需的软件包。
yum install podman httpd-tools -y |
如果在安装过程中提示找不到podman,如下所示:
已加载插件:langpacks, product-id, search-disabled-repos, subscription-manager
没有可用软件包 podman。
错误:无须任何处理
执行下面命令。
sudo subscription-manager repos --enable=rhel-7-server-extras-rpms sudo yum -y install podman |
建立镜像服务器目录。
mkdir -p /home/registry/{auth,certs,data} |
为镜像服务器建立证书,如果没有权威机构颁发的证书,可以创建一个自签名的证书。
cd /home/registry/certs openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt |
根据提示输入下面的必要信息。
Country Name (2 letter code) | Specify the two-letter ISO country code for your location. See the ISO 3166 country codes standard. |
State or Province Name (full name) | Enter the full name of your state or province |
Locality Name (eg, city) | Enter the name of your city. |
Organization Name (eg, company) | Enter your company name. |
Organizational Unit Name (eg, section) | Enter your department name. |
Common Name (eg, your name or your server’s hostname) | Enter the host name for the registry host. Ensure that your hostname is in DNS and that it resolves to the expected IP address. |
Email Address | Enter your email address. For more information, see the req description in the OpenSSL documentation. |
生成访问镜像服务器的用户名和密码(比如 admin/passw0rd)
htpasswd -bBc /home/registry/auth/htpasswd admin passw0rd |
如果堡垒机上防火墙是打开状态,确保5000端口可以从外面访问。
firewall-cmd --add-port=5000/tcp --zone=internal --permanent firewall-cmd --add-port=5000/tcp --zone=public --permanent firewall-cmd --reload firewall-cmd --add-port=5002/tcp --zone=internal --permanent firewall-cmd --add-port=5002/tcp --zone=public --permanent |
创建镜像服务器的容器。
podman run --name ocp4-registry -d -p 5000:5000 -v /home/registry/data:/var/lib/registry:z -v /home/registry/auth:/auth:z -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /home/registry/certs:/certs:z -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key docker.io/library/registry:2 |
注意:如果遇到docker pull 对匿名用户的限制,您可能需要登录 dokcer.io/library 并将该注册表映像拉到 bastion,然后创建注册表。
podman login docker.io/library
podman pull docker.io/library/registry:2
使用此命令来验证它是否有效。这里 testbostion.xxxxx.cn 是镜像服务器的主机,配置在 DNS 上。
curl -u admin:passw0rd -k https://testbostion.xxxxxx.cn:5000/v2/_catalog |
使用下面命令来起/停镜像服务器。
podman start ocp4-registry podman stop ocp4-registry |
将自签名证书添加到您的受信任证书列表中
cp /home/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/ update-ca-trust |
使用下面命令生成pull secret
生成的pullsecret_config.json如下所示:
访问 https://cloud.redhat.com/openshift/install/pull-secret 并用您的redhat订阅账号登录。然后点击 “Download pull secret”.
把它保存到 /home/registry/pullsecret.json. 编辑它,在它的最后加上本地镜像服务器的pull secret.
创建一个setEnv.sh的脚步,内容如下:
运行以下命令来镜像注册表。
chmod +x setEnv.sh . ./setEnv.sh oc adm -a ${LOCAL_SECRET_JSON} release mirror --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE} --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE} |
上述命令运行之后等一会,需要重启POD再运行oc adm。
如果遇到网络超时或连接重置错误,重新运行上面的 oc adm 脚本直到成功,如下图所示。
命令完成后,记下 imageContentSources 部分。以后会用到。
可以参考如下官方链接获得详细信息:
https://docs.openshift.com/container-platform/4.6/installing/installing_bare_metal/installing-bare-metal.html
OpenShift 4 需要一些支持服务:DNS 服务器、负载均衡器。我们将在此 VM 上安装负载均衡器,因为 DNS 服务器部署在单独的服务器中。此 VM 也将是登录 OCP 集群的客户端。
我们使用 RHEL 8.5 虚拟机。 IP 地址为 182.18.19.52。主机名为testbostion.xxxxx.cn。
防火墙默认是打开的,可以运行下面命令关闭它。
systemctl stop firewalld.service
systemctl disable firewalld.service
如果防火墙不能被禁用,添加如下防火墙规则。
l 22623/tcp: OCP machine config server
l 6443/tcp: OCP API server
l 80/tcp: OCP ingress http
l 443/tcp: OCP ingress https
l 9000/tcp: HAProxy health report
例如,使用以下命令修改 firewalld 设置以允许 DNS, API Server, Ingress, HAProxy。
firewall-cmd --add-port=22623/tcp --zone=internal --permanent firewall-cmd --add-port=22623/tcp --zone=public --permanent firewall-cmd --add-port=6443/tcp --zone=internal --permanent firewall-cmd --add-port=6443/tcp --zone=public --permanent firewall-cmd --add-port=80/tcp --zone=internal --permanent firewall-cmd --add-port=80/tcp --zone=public --permanent firewall-cmd --add-port=443/tcp --zone=internal --permanent firewall-cmd --add-port=443/tcp --zone=public --permanent firewall-cmd --add-port=9000/tcp --zone=internal --permanent firewall-cmd --add-port=9000/tcp --zone=public --permanent firewall-cmd --reload |
可以参考 https://github.com/openshift-tigerteam/guides/blob/master/ocp4/ocp4-haproxy.cfg
我们使用HAProxy作为辅助均衡。
yum -y install haproxy |
覆盖 /etc/haproxy/haproxy.cfg,使用以下内容。
# source: https://github.com/openshift-tigerteam/guides/blob/master/ocp4/ocp4-haproxy.cfg global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon # turn on stats unix socket stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close # option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #--------------------------------------------------------------------- listen stats bind :9000 mode http stats enable stats uri / monitor-uri /healthz frontend openshift-api-server bind *:6443 default_backend openshift-api-server mode tcp option tcplog backend openshift-api-server balance source mode tcp server bootstrap 182.18.18.66:6443 check server master-0 182.18.18.67:6443 check server master-1 182.18.18.68:6443 check server master-2 182.18.18.69:6443 check frontend machine-config-server bind *:22623 default_backend machine-config-server mode tcp option tcplog backend machine-config-server balance source mode tcp server bootstrap 182.18.18.66:22623 check server master-0 182.18.18.67:22623 check server master-1 182.18.18.68:22623 check server master-2 182.18.18.69:22623 check frontend ingress-http bind *:80 default_backend ingress-http mode tcp option tcplog backend ingress-http balance source mode tcp server worker-0 182.18.18.70:80 check server worker-1 182.18.18.71:80 check server worker-2 182.18.18.72:80 check server worker-3 182.18.18.73:80 check server worker-4 182.18.18.74:80 check server worker-5 182.18.18.75:80 check server worker-6 182.18.18.76:80 check server worker-7 182.18.18.77:80 check frontend ingress-https bind *:443 default_backend ingress-https mode tcp option tcplog backend ingress-https balance source mode tcp server worker-0 182.18.18.70:443 check server worker-1 182.18.18.71:443 check server worker-2 182.18.18.72:443 check server worker-3 182.18.18.73:443 check server worker-4 182.18.18.74:443 check server worker-5 182.18.18.75:443 check server worker-6 182.18.18.76:443 check server worker-7 182.18.18.77:443 check #--------------------------------------------------------------------- |
将引导程序和所有Master添加到 api-server (6443) 和 machine-config-server (22623) 部分。
将所有Worker添加到 ingress-http (80) 和 ingress-https (443) 部分。
设置 SELinux policy for haproxy
setsebool -P haproxy_connect_any=1 |
启动HAProxy:
systemctl start haproxy |
将HAProxy 激活为服务
systemctl enable haproxy |
检查HAProxy状态并确认它是active
systemctl status haproxy |
访问http://testbostion.xxxxx.cn:9000/health来检查HAProxy状态。
wget https://mirror.openshift.com/pub/openshift-v4/clients/ocp/4.8.26/openshift-client-linux-4.8.26.tar.gz
对于离线安装,需要从堡垒主机上的镜像注册表中提取 openshift-install。否则虚拟机可能无法从注册服务器拉取镜像。
运行以下命令以提取 openshift-install。
. ./setEnv.sh oc adm release extract --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}" -a ${LOCAL_SECRET_JSON} |
如果上述 oc admin release 提取脚本由于网络超时问题而失败,请重试直到成功。
对于离线安装,将 openshift-install(从注册表服务器中提取)从堡垒主机复制到 /usr/bin。
cp openshift-install /usr/bin/
mkdir /home/ocp48
转到 /home/ocp48。运行此命令以生成 SSH 密钥。
cd /home/ocp48 ssh-keygen -t rsa -b 4096 -N '' -C noname -f $(pwd)/openshift4_rsa |
启动 ssh-agent 进程作为后台任务。
eval "$(ssh-agent -s)" |
将您的 SSH 私钥添加到 ssh-agent。
ssh-add $(pwd)/openshift4_rsa |
把那个私钥文件拷到/root/.ssh下去,改名id_rsa
然后就可以在创建 ocp 集群后通过 ssh core@node SSO 到 OCP master/worker 节点。
转到 /home/ocp48。创建一个名为 install-config.yaml 的文件,如下所示:
apiVersion: v1 baseDomain: xxxxx.cn compute: - hyperthreading: Enabled name: worker replicas: 0 controlPlane: hyperthreading: Enabled name: master replicas: 3 metadata: name: wytestocp networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 networkType: OpenShiftSDN serviceNetwork: - 172.30.0.0/16 platform: none: {} pullSecret: '{"auths": {"testbostion.xxxxx.cn:5000": {"auth": "YWRtaW46V1lBZG1pblBhc3N3MHJk"}}}' sshkey: 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCi+euX5p7uiwoMmFoHOwfzaB/9mLsl2S6HE+tJaTQ1WueB7u8ZaIYHnA7yDlze0e6L6MItHiD2CIWOcGsft+y3V7TK8Fx1m90V0ULXFEPSZXjxOx7EhZoW+2dvwWgtSZdQe4XEZVv6eMhZR1NV+cuXi/A3mFgfd66DdROlXWNSh5xJoSjjHM4yteUF58ZjrX8Rpwwkcr2VNbSVg994pz++0b5QvK2kfvqopxeGLiaMs2hVheGSEq/0OeWfVkIOBiTWocaIRJB27ykzQnEDGcBrMgIWvg74+NPK2wQ5aSetXZr1XpQLaK0ix9Ofo86EkpswSew7l6r/EjdlYUG3rVG+EeHxULjEaP0j+V+lcb80hBW6dvOCfk95qTmUSd20wFFwmYdb4a5Nl10Y6JBACK+y8NaUiOWdYMKiFv8bJfjjqsgnmv8bG9jWfEsbPp+OqSYk7ikcN64TKXWJZQ25HYWRNibdIAdqQgRNSj1CP9hp8GVTlbn98vR16Z/56Ef3k2QBtJVQsYGZJHwODdcX5oAMbLkvREfyZ47Tq+mAT0Hq+oGOHeYrRobXoUHXVbOEBEZozj6QgFbvLfQW2AaOBSBiGC1E3VQmsK6JpMwtcDdqxSVGmuOe2fbjP7rhbsYPqvt3I1x/AFSGzkIS1BKWNLnbkxLY9jsz073J3ddGBsucCw== noname' additionalTrustBundle: | -----BEGIN CERTIFICATE----- MIIGGTCCBAGgAwIBAgIUdp7KiVCgWgpitAasxxDCWdRODe4wDQYJKoZIhvcNAQEL BQAwgZsxCzAJBgNVBAYTAkNOMQ4wDAYDVQQIDAVIZU5hbjEPMA0GA1UEBwwGSmlZ dWFuMRUwEwYDVQQKDAx3YW55YW5nZ3JvdXAxCzAJBgNVBAsMAnd5MSQwIgYDVQQD DBt0ZXN0Ym9zdGlvbi53YW55YW5nZ3JvdXAuY24xITAfBgkqhkiG9w0BCQEWEmR3 QHdhbnlhbmdncm91cC5jbjAeFw0yMjA2MTAwMTMzMjZaFw0zMjA2MDcwMTMzMjZa MIGbMQswCQYDVQQGEwJDTjEOMAwGA1UECAwFSGVOYW4xDzANBgNVBAcMBkppWXVh bjEVMBMGA1UECgwMd2FueWFuZ2dyb3VwMQswCQYDVQQLDAJ3eTEkMCIGA1UEAwwb dGVzdGJvc3Rpb24ud2FueWFuZ2dyb3VwLmNuMSEwHwYJKoZIhvcNAQkBFhJkd0B3 YW55YW5nZ3JvdXAuY24wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDe JHGEyM20bnutJHZN5EzyS7p1z2PmU30H9Jf7bEQnssNA5FVgBaU8p4KluL8FLJ+8 mOmQexgwnSKz5SuDsgQVgRTkcal7HTjO/dkYedylvdUz18aMXv9bCfLHqUPezhCl kfMyljbtBmuddQvKJ1xo1dcYHf77lVpeXqSBfQK7PNNUbElqYrfNmS4jRMnh86lq 7pTkHLQ+0Sy/VrM9iVzm2iugy0j3l2be228Ebgwwnmvdw/5mxxe8OpZ2REGla1Fb Jc4esGnVhYz2X2apIZxVO6d0DXSbp/YCQ+vLCjhH8Rh/ZhfW4UvYErrg0r9n1hj2 QCUhvdtDfkzmxyXQp/JDS+q9fyaf6O/5KotxssShNXbONiSp39g7mXErBgJNur00 bYMYyrkFsp7V6DdbQFU5ZrEdpG154oW7WGJ+ka1LhbjkdLQtN2hlOzyJFUs6NZlZ s6h5IrFbrSS4rMTuX5kdpwxO8aosLuKYWqVTFDYs9YOuHgWKOalbXbwcn0/qnlek aUS413Rtnapp5yQp/4YtoiTlrtGS6yJSI7o8+93WYfMI6UKxhRyuDVELAat39oyP W0tf9cFxYaKVz7+L7qT3UpPx/fm8omprfjGPharhIhnF3NBuy9NEWBPObQM4wDgt qmn7udZdsgxw656BGKtmf8ig3+0xXRzxR7kxcFwDdQIDAQABo1MwUTAdBgNVHQ4E FgQU8kb4VI6Pmf0JTMDe4KbKbxV1gp0wHwYDVR0jBBgwFoAU8kb4VI6Pmf0JTMDe 4KbKbxV1gp0wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAm7Qq 0cpN54r0lH90UiWB6vBqqprmEQwaMYn7ZtJvNriRlTOi6vBgiQ7g5uSq8xr7xlrV duMeuHkNyoIBx7+GvXz0Z2mozlDfLTrFIHCnyw2IE4pEDM8d8gfia2/oCrlPa5GQ p/am+Va22MUwPxutqqdHBCq8hQPn6igDoQl5qoMf18VHnd0fTxzdLSzBp2Silc1T x6ViD5YPH+Sff7tOgJIDdUF4yfOnv+GFkFwEEXWZfDPAl8JZRkVZCHun/6/6ubIq RZaD0e0/Yr3GZx5ZWr/JNZZbmq1gNaU0NaaDGV9IclDRLBlkkRIKAn0Neg5oTDIo 1+GToS77+kw5kwGRAhhUBwFRxK+LPBvtjQdeOVLFYOCjY++lXfogzlKCIwj52fF+ g3UJp6Mu0AO+0MYlnK2ohfKtocAApPZL2gogis81D/VjRAOp91YZfcRqnj2VcUUs K7/lN4CSefNNh+/eqzNDkY18ldZhIddvvUWeBqx8W8GZs51evmPVK///64Hy6n70 WnRnPIyoyAwZv24ZRfooiNkNzHi8+fP+g31m+JP/8ZkxoqWhH0JAqEyZZxKN1vCb ViHvLyjx3m8e7LoyvH0e+D2bJ/UIB1sVMc+350QGjCamvoGBnbfS4CRi2/9hs1PT K7ncqGxAUot/5iF+L7+WWnOZ6+RSElW1zhAhBwM= -----END CERTIFICATE----- imageContentSources: - mirrors: - testbostion.xxxxx.cn:5000/ocp4/openshift4 source: quay.io/openshift-release-dev/ocp-release - mirrors: - testbostion.xxxxx.cn:5000/ocp4/openshift4 source: quay.io/openshift-release-dev/ocp-v4.0-art-dev |
以上内容有问题,参照文件:
对于离线安装:
创建此文件的备份,因为它会在您稍后创建清单和点火文件时自动删除。
cp install-config.yaml install-config.yaml.bak |
转到 /home/ocp48。使用此命令生成清单文件。
openshift-install create manifests --dir=$(pwd) |
修改 manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件以防止在Master节点上调度 Pod。
vi manifests/cluster-scheduler-02-config.yml |
找到 mastersScheduable 参数并将其值设置为 false。
使用此命令创建 Ignition 文件。
openshift-install create ignition-configs --dir=$(pwd) |
将创建三个点火文件:bootstrap.ign、master.ign 和 worker.ign。
为每个点火文件创建一个shell脚本,如下所示:
l bootstrap.sh
#!/bin/bash
sudo coreos-installer install --copy-network --ignition-file=/var/home/core/bootstrap.ign /dev/sda
l master.sh
#!/bin/bash
sudo coreos-installer install --copy-network --ignition-file=/var/home/core/master.ign /dev/sda
l worker.sh
#!/bin/bash
sudo coreos-installer install --copy-network --ignition-file=/var/home/core/worker.ign /dev/sda
如果有人需要,后续内容继续连载。
页面更新:2024-05-30
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号