使用阿里云主机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集群节点
参考:
https://kubernetes.io/zh/docs/reference/kubectl/cheatsheet/
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands官网文档
Service可以看作是一组提供相同服务的Pod对外的访问接口。借助Service,应用可以方便的实现服务发现和负载均衡
Service默认只支持4层负载均衡能力,没有7层功能(可以通过Ingress实现)
Service的类型:
ClusterIP:默认值,k8s系统给Service自动分配的虚拟IP,只能在集群内部访问。
NodPort:将Service通过指定的集群节点上的端口暴露给外部,访问任意一个NodelP:nodePort都将路由到ClusterIP。
Loadalancer:在Nodeort的基础上,借助cloud provider创建一个外部的负载均衡器,并将请求转发到:NodePort,此模式只能在云服务器上使用。
ExternaName:将服务通过DNS CNAME记录方式转发到指定的域名(通过spec.extemINAME设定)
由于Pod会随时起停,所以分配固定IP不合适。且直接将容器地址暴露给外网也是不安全的做法。所以,在这中间,就需要Service来实现
开启kube-proxy的ipvs模式:
yum install -y ipvsadm #所有节点安装
kubectl edit cm kube-proxy -n kube-system #修改IPVS模式




























私有仓库需要先拉取metallb镜像













生产环境中,有很多业务是部署在集群之外的。从服务的角度来说,有些服务是部署在集群内的,有些是部署在集群外的。在访问外部服务的时候,如果外部服务的接口变动了该如何处理呢?那么可以使用服务的ExternalName类型。
本质就是添加dns解析记录









