三 、kubernetes基本概念

 

Container

Container(容器)是一种便携式、轻量级的操作系统级虚拟化技术。它使用 namespace 隔离不同的软件运行环境,并通过镜像自包含软件的运行环境,
从而使得容器可以很方便的在任何地方运行。由于容器体积小且启动快,因此可以在每个容器镜像中打包一个应用程序。这种一对一的应用镜像关系拥有很多好处。使用容器,
不需要与外部的基础架构环境绑定, 因为每一个应用程序都不需要外部依赖,更不需要与外部的基础架构环境依赖。完美解决了从开发到生产环境的一致性问题。
容器同样比虚拟机更加透明,这有助于监测和管理。尤其是容器进程的生命周期由基础设施管理,而不是由容器内的进程对外隐藏时更是如此。最后,
每个应用程序用容器封装,管理容器部署就等同于管理应用程序部署。
在 Kubernetes 必须要使用 Pod 来管理容器,每个 Pod 可以包含一个或多个容器。

Pod

关于Pod的概念主要有以下几点:

  • Pod是kubernetes中你可以创建和部署的最小也是最简的单位。一个Pod代表着集群中运行的一个进程;
  • 在Kubrenetes集群中Pod的使用方式;
  • Pod中如何管理多个容器

理解Pod:

上面已经说了“Pod是kubernetes中你可以创建和部署的最小也是最简的单位。一个Pod代表着集群中运行的一个进程。”Pod中封装着应用的容器(有的情况下是好几个容器),
存储、独立的网络IP,管理容器如何运行的策略选项。Pod代表着部署的一个单位:kubernetes中应用的一个实例,可能由一个或者多个容器组合在一起共享资源。
请注意:Docker是kubernetes中最常用的容器运行时,但是Pod也支持其他容器运行时。

Kubrenetes集群中Pod的两种使用方式:

(1)一个Pod中运行一个容器
“每个Pod中一个容器”的模式是最常见的用法;在这种使用方式中,你可以把Pod想象成是单个容器的封装,kuberentes管理的是Pod而不是直接管理容器。

实战:创建一个nginx容器

apiVersion: v1
kind: Pod
metadata:
  name: nginx-test
  labels:
    app: web
spec:
  containers:
  - name: front-end
    image: nginx:1.7.9
    ports:
    - containerPort: 80
创建Pod:
kubectl create -f ./pod1-deployment\
查看Pod:
kubectl get po
查看Pod详细情况:
kubectl describe po nginx-test
进入到Pod(容器)内部:
kubectl exec -it nginx-test  /bin/bash

(2)在一个Pod中同时运行多个容器
说明:在一个Pod中同时运行多个容器是一种比较高级的用法。只有当你的容器需要紧密配合协作的时候才考虑用这种模式。
一个Pod中也可以同时封装几个需要紧密耦合互相协作的容器,它们之间共享资源。这些在同一个Pod中的容器可以互相协作成为一个service单位——一个容器共享文件,
另一个“sidecar”容器来更新这些文件。Pod将这些容器的存储资源作为一个实体来管理。

实战:在一个pod里放置两个容器:nginx与redis

apiVersion: v1
kind: Pod
metadata:
  name: rss-site
  labels:
    app: web
spec:
  containers:
  - name: front-end
    image: nginx:1.7.9
    ports:
    - containerPort: 80
  - name: rss-reader
    image: redis
    ports:
    - containerPort: 88
创建Pod:
kubectl create -f ./test-deployment
查看pod
kubectl get po
查看Pod详细情况
kubectl describe po rss-site 
进入front-end内部:
kubectl exec -it rss-site  -c front-end /bin/bash 
进入rss-reade内部:
kubectl exec -it rss-site  -c rss-reader  /bin/bash

以上是关于Pod的简单介绍,如需了解更多,请参考Pod

猜你喜欢

转载自blog.csdn.net/ffzhihua/article/details/85244286