如何在OpenShift节点上打开Shell提示符

时间:2020-02-23 14:31:37  来源:igfitidea点击:

从OpenShift Container Platform 4.0开始的OpenShift工作节点和主节点用户将Red Hat CoreOS(RHCOS)作为基本操作系统。对于OKD,这将是Fedora CoreOS(FCOS)。不建议直接SSH到OpenShift节点,不要忘记默认情况下仅SSH密钥可用于访问。此SSH密钥是在部署OpenShift/OKD容器平台时提供的密钥。那么,如何访问OpenShift节点的Shell提示符。

在OpenShift节点上打开Shell提示符

OpenShift提供了一个oc客户端,可用于访问OpenShift节点的Shell提示符。

一旦OpenShift群集启动并运行,就可以使用以下命令安装oc客户端:

--- Linux --
wget https://mirror.openshift.com/pub/openshift-v4/clients/oc/latest/linux/oc.tar.gz
tar xvf oc.tar.gz
chmod +x oc
sudo mv oc /usr/local/bin

--- macOS --
wget https://mirror.openshift.com/pub/openshift-v4/clients/oc/latest/macosx/oc.tar.gz
tar xvf oc.tar.gz
chmod +x oc
sudo mv oc /usr/local/bin

通过检查版本来确认安装:

$oc version
Client Version: 4.5.0-201703270516-ad76834
Kubernetes Version: v1.17.4

访问OpenShift节点shell

我们将使用" oc debug node"命令在集群的任何节点中打开shell提示符。语法为:

$oc debug node/<node-name>

但首先列出群集节点:

$oc get nodes
NAME                                STATUS   ROLES          AGE   VERSION
mas01.ocp.theitroad.local     Ready    master         10d   v1.16.2
mas02.ocp.theitroad.local     Ready    master         10d   v1.16.2
mas03.ocp.theitroad.local     Ready    master         10d   v1.16.2
infra03.ocp.theitroad.local   Ready    infra,worker   10d   v1.16.2
infra03.ocp.theitroad.local   Ready    infra,worker   10d   v1.16.2
node01.ocp.theitroad.local    Ready    worker         10d   v1.16.2
node02.ocp.theitroad.local    Ready    worker         10d   v1.16.2
node03.ocp.theitroad.local    Ready    worker         10d   v1.16.2
ocs01.ocp.theitroad.local     Ready    worker         10d   v1.16.2
ocs02.ocp.theitroad.local     Ready    worker         10d   v1.16.2
ocs03.ocp.theitroad.local     Ready    worker         10d   v1.16.2

假设我们要启动到ocs01.ocp.theitroad.local节点的Shell会话,请运行:

$oc debug node/node01.ocp.theitroad.local
Starting pod/node01ocptheitroadcom-debug ...
To use host binaries, run `chroot /host`

该提示来自安装节点根文件系统的专用工具容器
在/host文件夹中,并允许我们检查节点中的所有文件。

如命令输出所示,我们需要在/host文件夹中启动chroot shell。这将使我们能够在Shell中使用主机二进制文件。

chroot /host

我们将看到如下输出:

chroot /host
Pod IP: 10.184.48.235
If you don't see a command prompt, try pressing enter.
sh-4.2# chroot /host
sh-4.4#

尝试运行命令例如检查操作系统版本:

sh-4.4# cat /etc/redhat-release 
Red Hat Enterprise Linux CoreOS release 4.3

sh-4.4# nmcli con show
NAME                UUID                                  TYPE      DEVICE 
Wired connection 1  dcd75b54-c1d9-39b7-b7e9-6996a182b53a  ethernet  ens192

oc debug shell会话使用相同的隧道技术,该技术允许在正在运行的pod oc rsh中打开shell提示。