开始使用k8s和docker

2021-11-29
2 min read
  • 比较简单的构建可运行的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前面。