如何在Kubernetes OpenShift中部署Ubuntu Pod

时间:2020-02-23 14:30:21  来源:igfitidea点击:

如何在Kubernetes或者OpenShift集群中创建单个Ubuntu Pod?在Kubernetes中,Pod是一个或者多个容器的组,具有共享的存储/网络资源,以及有关如何运行容器的规范。

当Pod运行单个容器时,我们可以将其视为单个容器的包装。 Kubernetes管理Pod而不是直接管理容器。

在本教程中,我们将研究如何在Kubernetes或者OpenShift集群中部署Ubuntu Pod。这可以用于调试目的,也可以仅测试与命名空间中其他Pod和Services的网络连接。

由于Pod被设计为相对短暂的和一次性的实体,因此永远不要通过直接创建Pod来运行生产容器工作负载。而是使用工作负荷资源(如部署)创建它们。

我们将使用最新标签从Ubuntu docker镜像创建一个睡眠容器。以下是Pod创建YAML的内容。

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
  labels:
    app: ubuntu
spec:
  containers:
  - name: ubuntu
    image: ubuntu:latest
    command: ["/bin/sleep", "3650d"]
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

我们可以在kubectl命令下面运行,以在当前名称空间中部署Pod:

cat <<EOF | kubectl apply -f 
apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
  labels:
    app: ubuntu
spec:
  containers:
  - name: ubuntu
    image: ubuntu:latest
    command: ["/bin/sleep", "3650d"]
    imagePullPolicy: IfNotPresent
  restartPolicy: Always
EOF

预期产量:

pod/ubuntu created

检查Pod状态:

$kubectl get pod ubuntu
NAME     READY   STATUS    RESTARTS   AGE
ubuntu   1/1     Running   0          34s

Access Podsshell

一旦确认Pod正在运行,就可以使用kubectl或者oc命令访问其Shell会话。

使用kubectl命令:

kubectl exec --stdin --tty ubuntu -- /bin/bash

要退出shell,请使用exit命令:

theitroad@localhost:/# exit
exit

使用oc命令:

$oc rsh  --shell=/bin/bash ubuntu
theitroad@localhost:/# exit
exit

在Ubuntu Pod中安装软件包

我们可以使用标准的ubuntu apt软件包管理工具来安装和删除软件包。

下面的示例将telnet安装到Ubuntu容器中。

$kubectl exec --stdin --tty ubuntu -- /bin/bash
theitroad@localhost:/# apt update
theitroad@localhost:/# apt install telnet
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  netbase
The following NEW packages will be installed:
  netbase telnet
0 upgraded, 2 newly installed, 0 to remove and 4 not upgraded.
Need to get 77.2 kB of archives.
After this operation, 207 kB of additional disk space will be used.
Do you want to continue? [Y/n] y

确认我们可以使用已安装的telnet。

theitroad@localhost:/# telnet 10.10.6.5   8080
Trying 10.10.6.5...
Connected to 10.10.6.5.
Escape character is '^]'.
E��^]
telnet> quit
Connection closed.