《Kubernetes设计与实现》
  • Introduction
  • 内容简介
  • 前言
  • [第二章:Kubernetes基础]
    • 2.3 Kubernetes API
  • [第三章:工作负载管理]
    • [3.1 Pod]
      • 3.1.1 Pod概述
      • 3.1.1 Pod初体验
    • [3.2 ReplicationController]
      • 3.2.1 ReplicationController概述
      • 3.2.2 ReplicationController初体验
    • [3.3 ReplicaSet]
      • 3.3.1 ReplicaSet概述
      • 3.3.2 ReplicaSet初体验
    • [3.4 Deployment]
      • 3.4.1 Deployment概述
      • 3.4.2 Deployment初体验
    • [3.5 DaemonSet]
      • 3.5.1 DaemonSet概述
      • 3.5.2 DaemonSet初体验
  • [第四章:服务]
    • [4.1 Service]
      • 4.1.1 Service概述
      • 4.1.1 Service上手体验
  • [第六章:配置管理]
    • [6.1 Secret--机密信息管理]
      • 6.1.1 Secret概述
  • [第七章:集群认证]
    • [7.1 证书]
      • 7.1.1 证书基础
      • 7.1.2 证书签发流程
  • [第九章:准入控制器]
    • [9.1 准入控制器概述]
      • 9.1.1 概述
      • [9.1.2 内置默认启动的插件]
        • 9.1.2.1 NamespaceLifecycle
        • 9.1.2.15 MutatingAdmissionWebhook
  • [第十章:ResourceQuota]
    • 10.1 ResourceQuota概述
  • [第十六章:API设计约定]
    • 16.1 字段可选性设计约定
    • 16.2 condition设计约定
    • 16.3 event设计约定
  • [第十九章:Kubernetes生态]
    • [19.1 Kind]
      • [19.1.1 Kind概述]
      • 19.1.2 映射端口到主机
      • 19.1.3 配置端口转发
由 GitBook 提供支持
在本页
  • 创建Pod
  • 查看Pod
  • 更新Pod
  • 删除Pod
  • 小结

这有帮助吗?

  1. [第三章:工作负载管理]
  2. [3.1 Pod]

3.1.1 Pod初体验

本节,我们通过一个简单的例子,来演示Pod资源的增删改查操作,而对Pod高级配置的介绍则留给后面的章节。

创建Pod

首先将如下配置保存到名为pod_simple.yaml的文件中:

apiVersion: v1
kind: Pod
metadata:
  name: pod-runs-nginx
spec:
  containers:
    - name: nginx
      image: nginx:latest

通过配置可知,我们将创建一个类型为Pod的资源,资源的版本为v1,Pod名称为pod-runs-nginx,Pod中容器名字为nginx,容器镜像为nginx:latest。

使用kubectl create命令创建资源,如下所示:

[root@ecs-d8b6 ~]# kubectl create -f pod_simple.yaml 
pod/pod-runs-nginx created

通过命令行输出可知,Kubernetes已经安照我们的配置创建了一个Pod资源。

查看Pod

使用命令kubectl get命令查看Pod,如下所示:

[root@ecs-d8b6 ~]# kubectl get pods
NAME             READY   STATUS    RESTARTS   AGE
pod-runs-nginx   1/1     Running   0          26s

可以看到名为pod-runs-nginx的Pod已经处于Running状态。

我们还可以给kubectl get 命令增加-o yaml参数,来查看Pod更详细的信息,如下所示:

[root@ecs-d8b6 ~]# kubectl get pods pod-runs-nginx -o yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-runs-nginx
  namespace: default
  uid: 6a946bac-e288-4e19-b743-7ee0eb04aa73
  ...
spec:
  containers:
  - image: nginx:latest
    imagePullPolicy: Always
    name: nginx
  restartPolicy: Always
  ...
status:
  phase: Running
  podIP: 172.17.0.6
  ...

Kubernetes在创建资源对象时会增加很多默认属性,受限于篇幅,上面只展了一部分信息。

我们知道,Kubernetes会为每个Pod分配一个IP,从上面的输出中可以看到该Pod的IP为172.17.0.6,我们可以使用该IP来访问Pod中的容器。

由于nginx默认监听在80端口,我们便可以使用Pod IP和端口来访问nginx,如下所示:

[root@ecs-d8b6 ~]# curl 172.17.0.6:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
...
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

通过输出内容,可以看到nginx已经可以正常工作了。

更新Pod

在上面的例子中,我们给容器指定的镜像版本为nginx:latest,我们可以修改镜像版本为nginx:1.19.0,于是我们把配置文件做如下修改:

apiVersion: v1
kind: Pod
metadata:
  name: pod-runs-nginx
spec:
  containers:
    - name: nginx
      image: nginx:1.19.0 # 修改镜像版本

然后使用命令kubectl apply 来提交修改后的配置,如下所示:

[root@ecs-d8b6 ~]# kubectl apply -f pod_simple.yaml 
pod/pod-runs-nginx configured

然后再次查看Pod信息,可以看到Pod中的容器镜像版本已经更新了:

[root@ecs-d8b6 ~]# kubectl get pods pod-runs-nginx -o yaml
apiVersion: v1
kind: Pod
metadata:
  name: pod-runs-nginx
  namespace: default
  uid: 6a946bac-e288-4e19-b743-7ee0eb04aa73
spec:
  containers:
  - image: nginx:1.19.0 # 镜像版本已更新
    imagePullPolicy: Always
    name: nginx
  restartPolicy: Always
  ...
status:
  phase: Running
  podIP: 172.17.0.6
  ...

删除Pod

使用命令kubectl delete命令可以删除Pod,如下所示:

[root@ecs-d8b6 ~]# kubectl delete pods pod-runs-nginx 
pod "pod-runs-nginx" deleted

删除Pod时会相应地停止并删除其所包含的容器。

小结

本节通过例子快速地演示了Pod的基本操作,Pod作为最基础的资源,与其他Kubernetes资源一样,都可以使用kubectl来操作。我们在上面的例子中刻意忽略了部分细节,比如如何控制镜像拉取行为、容器重启策略等,我们将这些内容放在后面的章节逐渐展开。

上一页3.1.1 Pod概述下一页[3.2 ReplicationController]

最后更新于4年前

这有帮助吗?