文章目录
使用阿里云主机ECS,
四台主机信息如下:
server1 — 私网IP:10.0.0.2 ----公网IP: 47.108.54.185 ---- 搭建docker仓库harbor
server2 — 私网IP:10.0.0.3 ----公网IP: 47.108.144.231 ---- k8s集群主节点
server3 — 私网IP:10.0.0.4 ----公网IP: 47.108.115.206 ---- k8s集群节点
server4 — 私网IP:10.0.0.5 ----公网IP: 47.108.28.42 ---- k8s集群节点
k8s集群内部加入私有harbor仓库
server1已经搭建好harbor,如何搭建参考docker-仓库文章
server1使用阿里云镜像加速器
集群中的节点指向私有仓库
pod管理
pod主要解决了两个问题,一是容器之间的通信问题,就是容器之间的超亲密关系。比如应用之间的连接存在频繁的通信。二是解决了容器之间数据共享的需求
在docker中就是开启一个一个的容器,在集群中,如果两个容器存在超亲密关系那么就不能将这两个容器调度到不同的节点上。
首先通过镜像google_containers/pause(永远处于暂停中的镜像)创建pod。pod提供了容器的存储和通信。k8s是把IP分配给pod,pod内的所有容器共享一个网络栈。网络可以通过localhost回环接口进行通信。存储是通过卷,提供了临时存储功能。如果不删除pod,那么卷都是存在的,卷的生命周期和pod的生命周期一样。如果容器存在问题,就会触发自动重启策略。就会自动重启容器,重建。那么容器之前的数据就会销毁,所以需要pod做数据持久化,以供其他容器使用。
可以理解为。容器相当于进程,pod相当于进程组。
pod是k8s中最小的调度单位
创建pod
使用控制器,管理pod副本
微服务service
service是一个抽象概念,定义了一个服务的多个Pod逻辑合集和访问Pod的策略,一般把service称为微服务(例如实现集群负载均衡)
暴露端口:kubectl expose deployment nginx --port=80
此时Pod客户端可以通过service的名称访问后端的Pod
ClusterIP:service默认类型,自动分配一个仅集群内部可以副访问的虚拟IP,包括其他加入集群的虚拟机
pod的扩容与缩容
更改service类型为NodePort
通过使用类型NodePort,可以实现集群外的主机访问pod
更新pod镜像
pod镜像版本回滚