什么是pod
pod是可以创建和管理Kubernetes计算的最小可部署单元
一个pod代表着集群中运行的一个进程,每一个pod都有一个唯一的ip
一个pod类似一个豌豆荚,包含一个或多个容器(通常是docker)
多个容器直接共享Network,memory和UTC namespace等
查看所有命名空间中的所有pod
kubectl get pods --all-namespaces
1.创建自主式pod(生产不推荐)
所谓自主式,就是不是在控制中的pod
优点:
灵活性高,可以精确的控制pod的各种配置参数,包括容器的镜像,资源限制,环境变量等等
学习和调试方便
对于学习kubernetes的原理和机制比较方便,可以通过手动创建pod来深入了解pod的结构和配置方式,再调试出了问题时,也可以直接的观察和调试pod
缺点:
管理复杂:如果需要管理大量的pod,手动创建和维护会变的非常的繁琐,难以实现的自动化的扩容缩容故障恢复等
缺乏高级功能:无法享受kubernetes提供的自动部署,滚动更新,服务发现等等
可维护性差:在更新的时候需要手动的去更改配置,容易出现错误
2.利用控制器管理pod(推荐)
控制器管理具有高可用性和可靠性
如果一个pod失败或者被删除,控制器会自动创建新的pod来维持期望的副本数量。确保应用始终处于可用的状态,减少因pod故障导致的服务中断
还有可扩展性:可以通过简单的命令或者配置更改来增加或减少pod的数量。
更好的进行版本管理和更新,也可以保证多环境一致性,还具有服务发现和负载均衡的功能
还可以通过yaml文件来编写
通过命令来获取yaml模版
运行多个容器的时候资源共享的同时在使用 相同资源时也会被干扰,比如端口
在尝试一个pod中运行俩个nginx的时候发现只能运行一个,查看日志发现80端口被占用了
从侧面可以反应出:pod是一个系统,pod中的容器是一个应用程序,一个系统的一个应用程序只能有`一个
在一个pod中开多个容器的时候一定要确保容器彼此不能相互干扰
理解pod
间的网络整合
同一个pod容器中公用一个网络
这里我们发现,busyboxplus是一个busyboxplus的容器,但是为什么可以访问到nginx容器呢?原因就是:busyboxplus和nginx在一个pod中,共用同一个资源。也从侧面可以反应出:pod是一个系统
端口映射: