[kubernetes]5-5/6 部署ingress-nginx
5-5 部署ingress-nginx(上)
域名访问方案 ingress
ingress是一个管理外部访问到集群内部服务的api对象,例如http。可以提供负载均衡 ssl 基于名字的虚拟主机
Ingress 是什么?
通常,服务 和 Pod 具有仅能在集群网络内路由的 IP 地址。在边缘路由器结束的所有流量都被丢弃或转发到别处。从概念上讲,这可能看起来像:
internet
|
------------
[ Services ]
Ingress 是允许连接到集群 Service 的规则集合。
internet
|
[ Ingress ]
--|-----|--
[ Services ]
5-6 部署ingress-nginx(下)
# 创建ingress-nginx文件夹
mkdir /opt/kubernetes/ingress-nginx
cd /opt/kubernetes/ingress-nginx
# 下载yaml文件 并且1.14需要替换kubernetes.io/os 为 beta.kubernetes.io/os 新版本不一样了
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
上面原视频的下载好像现在不行了 要不就是镜像跑不起来
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.19.0/deploy/mandatory.yaml
docker pull registry.cn-hangzhou.aliyuncs.com/liuyi01/defaultbackend-amd64:1.4
docker tag registry.cn-hangzhou.aliyuncs.com/liuyi01/defaultbackend-amd64:1.4 k8s.gcr.io/defaultbackend-amd64:1.4
# 创建ingress-nginx
kubectl apply -f mandatory.yaml
# 查看ingress-nginx启动状态
kubectl get all -n ingress-nginx
1.15.3版本
查看用了什么镜像
grep image mandatory.yaml
hostport 比桥接模式 效率高 并且没有网络转发。nodeport会有网络转发,因为不知道在哪个节点,会多一次转发。
关闭一台harbor的80端口 用于nginx
# 给节点打标签
kubectl label node $node-name app=ingress
添加
hostNetwork: true
nodeSelector:
app: ingress
# 应用
kubectl apply -f mandatory.yaml
查看服务 以及node2上的端口情况
测试
kubectl create -f ingress-demo.yaml
kubectl get pod -o wide
修改windows主机host
分别访问http://tomcat.mooc.com/ 和http://api.mooc.com/
如果pod还没有ready 还处于ContainerCreating状态 会显示503