一小时k8s
kubernetes组件
一个节点就是一个物理机或者虚拟机,在这个节点上我们可以运行一个或者多个Pod,Pod是Kubernetes的最小调度单元,一个Pod就是一个或者多个应用容器的组合。它创建了一个容器的运行环境,在这个环境容器可以共享一些资源,假设我们的系统包括一个应用程序和一个数据库,就可以将应用程序和数据库分别放到两个不同的Pod中,一般我们建议一个Pod中只运行一个容器,但是并不是只能运行一个容器,这样可以更好地实现应用程序的解耦和扩展,其实一个Pod中是可以运行多个容器的,但是一般也仅限于这些容器是高度耦合的情况,它们之间为了实现某种功能或者共享资源而不得不放到同一个Pod中,比如大家经常听到的Sidecar也就是边车模式,就是将一个应用容器和一个辅助容器放到同一个Pod中,这个辅助容器就是Sidecar,通常用来实现一些辅助的功能。
现在我们已经将应用程序和数据库分别放到了两个Pod中,应用程序要访问数据库的话就需要知道数据库的IP地址,这个IP地址是在Pod创建的时候自动分配的,它是一个集群内部的IP地址,Pod之间可以通过这个IP地址来进行通信,这样我们的应用程序就可以通过这个iP地址来访问数据库了
但是这里有两个问题需要注意一下,一个是这个iP地址是一个内部的IP地址,在集群外部是无法访问的,还有一个问题就是Pod并不是一个稳定的实体,也就意味着它们非常容易被创建或者销毁,比如发生故障的时候,Kubernetes会自动将Pod销毀掉,然后重新创建一个新的Pod来替代它,这个时候Pod的IP地址也会发生变化,如果应用程序还使用原来的IP地址访问数据库的话就会发生问题。为了解决这个问题Kubernetes提供了一个叫做Service的资源对象,它可以将一组Pod封装成一个服务,这个服务可以通过一个统一的入口来访问。
拿刚刚的例子来说我们可以将应用程序和数据库的Pod分别封装成两个Service,这样应用程序就可以通过Service的IP地址来访问数据库了,当pod发生故障ip发生变化,但service的ip地址是不会变化的,Service会自动将请求转发到其他健康的Pod上,这样就解决了Pod的IP地址不稳定的问题
服务也分为内部服务和外部服务,外部服务有几种常用的类型,其中一种类型就是NodePort,它会在节点上开放一个端口







