发布时间:2023-01-24 19:00
Ingress是外部访问集群的方式
ingress-controller有多种提供方,kubernetes官方推荐ingress-nginx-controller。这里是链接。部署ingress-nginx-controller时,如果采用LoadBalancer,则需要云服务提供商。一般我们都是进行独立的私有化部署,因此默认的LoadBalancer方式部署并不适用
官方提供了多种解决方案,以下部分方案说明,所有方案参考bare metal
- 使用NodePort方式部署ingress-nginx-controller。缺点是端口不固定,创建ingress后需要通过xxx.example.com:port的方式进行访问。
- 开源LoadBalancer项目MetalLB。解决LoadBalancer必须使用云提供商的痛点,但是一开始是个人项目,目前由个人团队维护,处于beta阶段。
使用的镜像为google的gcr镜像,国内无法访问。好心人已经在DockerHub上传了这些镜像,可以在DockerHub上搜索ingress-nginx-controller和kube-webhook-certgen,修改部署yaml文件种的image即可成功部署。也可以将DockerHub上的镜像pull下来后,push到私有镜像仓库,修改对应的image地址进行部署。
准备工作#
首先需要部署好ingress-nginx,然后修改kube-proxy配置
kubectl edit configmap -n kube-system kube-proxy
按照下面设置
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
ipvs:
strictARP: true
安装metallb
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.3/config/manifests/metallb-native.yaml
假设外部域名都解析到master节点,则metallb的ip地址池可以配置成固定的master节点的ip(192.168.3.81),按照下面配置创建资源:
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: public-ips
namespace: metallb-system
spec:
addresses:
- 192.168.3.81/32
创建好ip地址池后ingress-nginx命名空间下的ingress-nginx-controller会从pending状态变成running状态(如果没有请修改成NodePort再修改成LoadBalancer),并且分配外部endpoints 192.168.3.81:80和192.168.3.81:443。此时创建好ingress就可以通过域名的方式访问集群中的服务。例如:
kubectl create deployment demo --image=httpd --port=80
kubectl expose deployment demo
kubectl create ingress ing-demo --class=nginx --rule="demo.k8s-app.com/*=demo:80"
注意:通过外部域名访问需要预先在dns服务器(可以使用bind9搭建)中配置好*.k8s-app.com解析到192.168.3.81。此时访问demo.k8s-app.com会显示It works!。
将VSCode部署到服务器,打开浏览器,上号!开始「云代码」!
【牛客网面经整理】7.20shopee一面面经,加入我自己整理的相关拓展问题(redis))
基于CNN的图像分类综述(包含小样本图像/零样本图像、细粒度图像分类)
Geoffrey Hinton:我的五十年深度学习生涯与研究心法
appuim java 脚本_APP自动化测试神器之Appium-QQ登录脚本实战(java版)
报表工具对比评论汇总,选型看这一篇就够了---------报表工具对比软文最全的收集汇总帖子
流批一体开源项目ChunJun技术公开课——ChunJun同步Hive事务表
带你认识Jenkins从Gitlab拉取代码,项目部署到Tomcat全流程
synopsys parallel_case full_case
docker构建python镜像_Docker最佳实践:构建最小镜像
SpringBoot 后台 + 小程序原生 实现微信小程序 APIV3支付