- 比较简单的构建可运行的k8s集群的方法:
- 用MiniKube运行一个本地单节点k8s集群
- 访问在Google Kubernetes Engine(GKE)上托管集群
- 利用kubeadm安装一个集群
- 在AWS上安装,可以使用kops工具,其是在kubeadm基础之上构建的
k8s使用多个共存容器的理念,这组容器就叫做pod。一组pod就是一组紧密相关的容器,他们运行在同一个工作节点上,以及同一Linux命名空间中,每一个pod就像一个独立的逻辑机器,有自己的ip、主机名、进程等。
调度是指将pod分配给一个节点,pod会立即运行,而不是将要运行
每个pod有自己的ip地址,但是如果需要让这个ip能从集群外部访问到,就需要通过服务对象公开它,需要创建一个特殊的LoadBalancer类型的服务。
pod的存在可能是短暂的,因为一个pod可能因为节点故障,或者被人删除,或者被从一个健康节点剔除,消失的pod将会被ReplicationController替换成新的pod,新的pod和替换它的pod有不同的ip,故而需要服务(图中的kubian-http)解决不断变化的pod IP地址的问题,在一个固定IP和端口上暴露多个pod。这样使得一个服务被创建时,得到一个静态IP,在服务生命周期中这个IP不会改变,客户端通过固定IP地址连接到服务,而不是直接链接pod。
一个改变ReplicationController期望的副本数的命令如下:
kubectl scale re kubia --replicas=3
可以看出并不告诉k8s应该执行什么操作,而是声明式地改变系统的期望状态,并让k8s检查当前的状态是否与期望一致。
pod有多个实例的时候k8s就会将请求随机的切换到不同的pod,服务作为负载均衡挡在多个pod前面。