OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)

《OpenShift / RHEL / DevSecOps 汇总目录》
说明:本文已经在 OpenShift 4.12 的 OpenShift 环境中验证

文章目录

  • 单节点 OpenShift 和 OpenShift 辅助安装器
    • 单节点 OpenShift
    • OpenShift 辅助安装器
  • 使用辅助安装器安装单节点 OpenShift
    • 本文使用的安装环境
    • 准备环境
      • 在宿主机上安装 KVM 环境
      • 创建 SSH 证书
    • 根据集群配置,用辅助安装器生成 Discovery ISO
    • 用 Discovery ISO 启动 VM,完成安装过程
    • 后续配置和操作
      • 安装并设置 DNS 服务
      • 访问集群
      • 登陆访问 OpenShift 节点
      • 启动和关闭集群
      • 启动处理
        • 关闭集群
  • 演示视频
  • 参考

单节点 OpenShift 和 OpenShift 辅助安装器

单节点 OpenShift

单节点 OpenShift 指的是 OpenShift 集群只有一个节点,Master 和 Worker 都运行在该节点上。单节点 OpenShift 的运行方式比较适合边缘计算中 Far Edge 环境,另外还可以在 Development 或 Testing 环境中使用。

我们可以在虚机或裸机上安装单节点 OpenShift,其中在 Far Edge 环境中运行更适合裸机部署单节点 OpenShift,而 Development 或 Testing 环境可以用虚机部署单节点 OpenShift。在虚机中安装好的单节点 OpenShift 同红帽的 OpenShift Local 环境非常相近,它们都是运行在虚机中,而且都是只有一个节点。

OpenShift 辅助安装器

OpenShift 辅助安装器是一个可帮助用户简化在线安装 OpenShift 的工具。用户在 RedHat 网站 OpenShift 辅助安装器的向导中提供适当的集群信息后便可得到一个包含安装配置+RHCOS 的 ISO 文件。当我们使用这个 ISO 启动节点后,节点会自动连接到 RedHat 网站并完成后续安装步骤。这样就能比较方便快捷地安装好一个 OpenShift 环境。

OpenShift 辅助安装器既可用来安装单节点 OpenShift,也可用来安装标准的多节点 OpenShift 集群。

使用辅助安装器安装单节点 OpenShift

本文使用的安装环境

本文将使用 KVM 虚机部署单节点 OpenShift,以下是运行 KVM 的宿主机配置:

  • 裸机硬件:8 vCPU + 16 G 内存
  • OS 软件:RHEL 7(或 CentOS 7)+ 桌面环境 + KVM 虚拟化环境 + 版本较新的 Chrome 或 Edge 浏览器
  • OS IP:固定 IP - 192.168.1.41/24,Gateway - 192.168.1.1,DNS - 192.168.1.1

说明:如果要直接在裸机上运行 OpenShift,需在后续步骤中先使用下载的 ISO 文件制作启动盘,然后启动裸机完成安装。

准备环境

在宿主机上安装 KVM 环境

在宿主机上执行命令即可安装 KVM 环境。

$ sudo yum install -y virt-* libvirt qemu-img

创建 SSH 证书

在宿主机上执行命令生成 SSH 证书密钥对,其中 id_rsa.pub 是公钥。该证书用来远程登陆访问运行 OpenShift 的节点。

$ ssh-keygen -N ''
$ more ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKQh4w4FBEPs5wk/0tVZVZ/l8+AwJCWMWZOdp8geXRCaMztSpYNGrPZWLm/bAT7qUUlbLSohkY5ItpsC5Llh9goYv48Ii1cVYqsdnL5vrqZyuR4FkzCJl5gxuZpXHBIMNVfe6tLYFMV6gLQ5P28ESBRkW51plO8MDqybSt+Ny+ypViyGKuEr4gcl3nGwLGtElfeqd3tw6aG9ZBQi0EOrwXLNYDhlu/XbKXmXaQVEauN1nO3UBo5fnqMa7AJuUAh1XaJdqPxym7qwaEszob5zL35/2syQWfqjGD3Os3fi3AuXOGkpBoV+hmoTUDkxgRTm0CeQJvuL7Kr1gvFLKymfpj dawnsky@x1

根据集群配置,用辅助安装器生成 Discovery ISO

  1. 使用红帽用户登陆并访问 https://console.redhat.com/openshift/assisted-installer/clusters,然后点击 Create Clusters。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第1张图片
  2. 在 Install OpenShift with the Assisted Installer 页面的第 1 步中按下图提供或选择以下配置,然后点击 Next。
    Cluster name
    Base domain
    OpenShift version
    Install single node OpenShift (SNO)
    DHCP only
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第2张图片
  3. 在 Install OpenShift with the Assisted Installer 页面的第 2 步中直接点击 Next。说明:选装安装附加功能需要更多 CPU 和内存,本文的硬件不能选装这些附加功能。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第3张图片
  4. 在 Install OpenShift with the Assisted Installer 页面的第 3 步中点击 Add host。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第4张图片
  5. 在下图 Add host 窗口中填入前面步骤生成的 SSH 公钥,然后点击 Generate Discovery ISO,
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第5张图片
  6. 下载 Discovery ISO 文件,将其保存到宿主机的 /var/lib/libvirt/images/ 目录下。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第6张图片

用 Discovery ISO 启动 VM,完成安装过程

  1. 在宿主机中执行以下命令运行 Virt Manager,然后在 Virt Manager 中创建一个新的虚拟机。
$ virt-manager
  1. 在 Create a new virtual machine 的第 1 步中选择 Local install media (ISO image or CDROM) 作为操作系统安装源。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第7张图片
  2. 在 Create a new virtual machine 的第 2 步中选择 Use ISO image,然后点击 Browse。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第8张图片
  3. 在 Choose Storage Volume 窗口选中 default 文件系统目录的 xxxx-discovery.iso 文件,然后点击 Choose Volume。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第9张图片
  4. 在 Create a new virtual machine 的第 2 步中点击 Forward。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第10张图片
  5. 在 Create a new virtual machine 的第 3 步按下图配置所需的最低 Memory 和 CPUs。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第11张图片
  6. 在 Create a new virtual machine 的第 4 步分配虚拟机使用的存储空间。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第12张图片
  7. 在 Create a new virtual machine 的第 5 步提供虚拟机名称,同时使用 Virtual network ‘default’ : NAT 作为网络配置。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第13张图片
  8. 完成后可看到以下 VM 的窗口。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第14张图片
  9. (可选)如果在前面生成 Discovery ISO 时选择了 Install Logical Volume Manager Storage,需按下图为 VM 创建第 2 个存储设备。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第15张图片
  10. 完成 VM 创建后启动它,启动完成后会看到下图窗口。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第16张图片
  11. 在宿主机上运行以下命令,可以看到上图 VM 操作系统的网络是运行在 virbr0 网桥所用网段。
$ ip a show type bridge
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:3f:46:8d brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

后续配置和操作

  1. 在 Install OpenShift with the Assisted Installer 页面的第 3 步中等待在 Host inventory 中出现主机。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第17张图片
  2. 在 Install OpenShift with the Assisted Installer 页面的第 4 步查看主机的存储配置。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第18张图片
  3. 在 Install OpenShift with the Assisted Installer 页面的第 6 步确认所有配置,然后点击 Install cluster。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第19张图片
  4. 此时在节点开始安装 OpenShift。可以通过进程条了解安装进度,还可点击 View Cluster Events 来查看安装过程中的详细事件。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第20张图片
  5. 安装完成后将看到下图,其中 Web Console URL 是访问 OpenShift 控制台的地址。此时由于还不能解析该地址对应的域名而无法打控制台开页面。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第21张图片

安装并设置 DNS 服务

  1. 点开上图 Not enable to access the Web Console 连接,将显示以下提示。说明:可以用以下 2 种方法将 OpenShift 所用域名和 IP 地址对应起来,本文介绍第二种实现方法。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第22张图片
  2. 执行命令列出 connection 和对应的设备,其中上图的 IP 地址属于 virbr0 网桥网段。
$ nmcli connection
NAME              UUID                                  TYPE    DEVICE    
ChinaNet-YSHQ-5G  688a8258-4742-447d-9931-771b35b5a7b1  wifi    wlp0s20f3 
virbr0            6d1b3b66-a015-4969-9747-c067b0a5de09  bridge  virbr0    
vnet0             4863eb9f-51e1-4b1e-8999-54cfbf51f627  tun     vnet0     
  1. 创建 dns-sno.sh 文件,内容如下(可根据情况修改前 5 个变量内容)。该配置会在宿主机上安装配置 DNS 服务,然后将宿主机的 DNS 指向自己节点的 IP - 192.168.1.41。DNS 服务将解析单节点 OpenShift 使用的域名,其他域名将转发给 114.114.114.114 和 8.8.8.8 解析。
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
OCP_CLUSTER_NAME=ocp-sno
BASE_DOMAIN=ocp.com
CONNECTION_NAME=ChinaNet-YSHQ-5G
DNS_IP=192.168.1.41
OCP_IP=192.168.122.63
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
yum -y install bind bind-utils
systemctl enable named --now

cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak
cp /etc/named.conf /etc/named.conf.bak

sed -i -e "s/listen-on port.*/listen-on port 53 { any; };/" /etc/named.conf
sed -i -e "s/allow-query.*/allow-query { any; };/" /etc/named.conf
sed -i '/recursion yes;/a \
        forward first; \
        forwarders { 114.114.114.114; 8.8.8.8; };' /etc/named.conf
sed -i -e "s/dnssec-enable.*/dnssec-enable no;/" /etc/named.conf
sed -i -e "s/dnssec-validation.*/dnssec-validation no;/" /etc/named.conf

#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cat >> /etc/named.rfc1912.zones << EOF

zone "${OCP_CLUSTER_NAME}.${BASE_DOMAIN}" IN {
        type master;
        file "${OCP_CLUSTER_NAME}.${BASE_DOMAIN}.zone";
        allow-transfer { any; };
};

EOF

#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cat > /var/named/${OCP_CLUSTER_NAME}.${BASE_DOMAIN}.zone << EOF
\$ORIGIN ${OCP_CLUSTER_NAME}.${BASE_DOMAIN}.
\$TTL 1D
@           IN SOA  ${OCP_CLUSTER_NAME}.${BASE_DOMAIN}. admin.${OCP_CLUSTER_NAME}.${BASE_DOMAIN}. (
                                        0          ; serial
                                        1D         ; refresh
                                        1H         ; retry
                                        1W         ; expire
                                        3H )       ; minimum

@             IN NS                         dns.${BASE_DOMAIN}.
api            IN A                          ${OCP_IP}
api-int        IN A                          ${OCP_IP}
*.apps         IN A                          ${OCP_IP}

EOF

#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
nmcli connection modify ${CONNECTION_NAME} ipv4.dns ${DNS_IP}
systemctl restart NetworkManager
systemctl restart named
rndc reload
  1. 执行 dns-sno.sh 命令,然后可进行测试。
$ ./dns-sno.sh
$ ping www.redhat.com
$ ping api.sno.ocp.com
$ ping oauth-openshift.apps.sno.ocp.com
$ ping console-openshift-console.apps.sno.ocp.com
$ ping grafana-openshift-monitoring.apps.sno.ocp.com
$ ping thanos-querier-openshift-monitoring.apps.sno.ocp.com
$ ping prometheus-k8s-openshift-monitoring.apps.sno.ocp.com
$ ping alertmanager-main-openshift-monitoring.apps.sno.ocp.com

访问集群

说明:上一节为宿主机配置的 DNS 是将访问 OpenShift 的域名解析到该宿主机的 virbr0 网桥网段,进而从网桥进入到 VM 中。由于该 virbr0 网桥网段只在宿主机上效,因此只能从宿主机通过域名直接访问 OpenShift 控制台,而从宿主机以外无法通过域名直接访问到 OpenShift 控制台。

  1. 在宿主机中用浏览器中访问下图的 https://console-openshift-console.apps.sno.ocp.com。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第23张图片
  2. 点击上图 Download kubeconfig,下载文件保并将其保存为 ~/.kube/config 文件。
  3. 使用上图的 Username 和 Password 登陆 OpenShift Console。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第24张图片
  4. 根据下图,在下拉菜单中进入 “命令行工具”。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第25张图片
  5. 下载 oc for Linux 客户端程序到宿主机。
    OpenShift 4 - 使用辅助安装器安装单节点 OpenShift (视频)_第26张图片
  6. 在宿主机上执行以下命令,为 oc 设置执行环境。最后确认可以通过 oc 获取到 OpenShift 集群中的项目信息。
$ tar -xvf oc.tar
$ sudo mv oc /usr/bin/
$ oc get project
NAME                                               DISPLAY NAME   STATUS
assisted-installer                                                Active
default                                                           Active
kube-node-lease                                                   Active
kube-public                                                       Active
kube-system                                                       Active
openshift                                                         Active
......

登陆访问 OpenShift 节点

在宿主机上执行命令,可进入运行 OpenShift 的 VM 操作系统内部。

$ ssh -i ~/.ssh/id_rsa [email protected]
The authenticity of host '192.168.122.63 (192.168.122.63)' can't be established.
ECDSA key fingerprint is SHA256:uBLlWdC4pmdJ8jUs5ie9snpoXkhC7kzZ4CJoVKQzVfk.
ECDSA key fingerprint is MD5:d5:b8:c8:c9:48:22:d5:60:6a:1b:b0:a7:70:a3:43:a9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.63' (ECDSA) to the list of known hosts.
Red Hat Enterprise Linux CoreOS 412.86.202301311551-0
  Part of OpenShift 4.12, RHCOS is a Kubernetes native operating system
  managed by the Machine Config Operator (`clusteroperator/machine-config`).

WARNING: Direct SSH access to machines is not recommended; instead,
make configuration changes via `machineconfig` objects:
  https://docs.openshift.com/container-platform/4.12/architecture/architecture-rhcos.html

---

启动和关闭集群

启动处理

启动 VM 就会自动运行 OpenShift。有些时候,在 VM 启动后 OpenShift 可能有新的 CSR(certificate signing requests) 需要处理,只有在处理完后 OpenShift 才能启动完成。

  1. 执行命令,查看当前是否有未处理的 CSR,如果有就 approve。
$ oc get csr
NAME        AGE     SIGNERNAME                                    REQUESTOR                                                                   REQUESTEDDURATION   CONDITION
csr-2kzc6   9m34s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   <none>              Pending
csr-4n8vq   24m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   <none>              Pending
csr-jrrtd   27m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper   <none>              Pending
 
$ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve
  1. 在 OpenShift 启动完后,确认所有 ClusterOperator 状态为 Available。
$ oc get co
NAME                                       VERSION   AVAILABLE   PROGRESSING   DEGRADED   SINCE   MESSAGE
authentication                             4.12.2    True        False         False      3d3h    
baremetal                                  4.12.2    True        False         False      3d3h    
cloud-controller-manager                   4.12.2    True        False         False      3d3h    
cloud-credential                           4.12.2    True        False         False      3d4h    
cluster-autoscaler                         4.12.2    True        False         False      3d3h    
config-operator                            4.12.2    True        False         False      3d4h    
console                                    4.12.2    True        False         False      3d3h    
control-plane-machine-set                  4.12.2    True        False         False      3d3h    
csi-snapshot-controller                    4.12.2    True        False         False      3d4h    
dns                                        4.12.2    True        False         False      3d3h    
etcd                                       4.12.2    True        False         False      3d4h    
image-registry                             4.12.2    True        False         False      3d3h    
ingress                                    4.12.2    True        False         False      3d3h    
insights                                   4.12.2    True        False         False      3d3h    
kube-apiserver                             4.12.2    True        False         False      3d3h    
kube-controller-manager                    4.12.2    True        False         False      3d3h    
kube-scheduler                             4.12.2    True        False         False      3d3h    
kube-storage-version-migrator              4.12.2    True        False         False      3d4h    
machine-api                                4.12.2    True        False         False      3d3h    
machine-approver                           4.12.2    True        False         False      3d3h    
machine-config                             4.12.2    True        False         False      3d3h    
marketplace                                4.12.2    True        False         False      3d4h    
monitoring                                 4.12.2    True        False         False      3d3h    
network                                    4.12.2    True        False         False      3d4h    
node-tuning                                4.12.2    True        False         False      3d3h    
openshift-apiserver                        4.12.2    True        False         False      3d3h    
openshift-controller-manager               4.12.2    True        False         False      3d3h    
openshift-samples                          4.12.2    True        False         False      3d3h    
operator-lifecycle-manager                 4.12.2    True        False         False      3d3h    
operator-lifecycle-manager-catalog         4.12.2    True        False         False      3d3h    
operator-lifecycle-manager-packageserver   4.12.2    True        False         False      3d3h    
service-ca                                 4.12.2    True        False         False      3d4h    
storage                                    4.12.2    True        False         False      3d3h    

关闭集群

在宿主机上执行以下两段命令均可关闭 OpenShift 集群运行。

方法 1:

$ ssh -i ~/.ssh/id_rsa [email protected]
$ sudo shutdown -h now

方法 2:

$ oc get node
$ oc debug node/XXX
sh-4.4# chroot /host
sh-4.4# shutdown -h now

演示视频

视频

参考

https://cloud.redhat.com/blog/how-to-use-the-openshift-assisted-installer
https://jameswilkins.co.uk/install-openshift/
https://cloud.redhat.com/blog/meet-the-new-agent-based-openshift-installer-1

你可能感兴趣的:(OpenShift,4,Ops,openshift,linux)