如何在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.