k8s 部署ingress nginx
简介
只是做记录,防止忘记。今天我们要实现的是文章图片上面这种访问方式.
k8s 安装ingress nginx
首先部署下面这个yaml档
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
大部分教程的做法都是直接输入命令,但是我喜欢先下载
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
因为是在国内,所以你需要确定里面的镜像能不能下载到机器里,如果不行,推荐使用我下面这个方法
https://www.bboysoul.com/2019/08/19/k8s%E5%85%8Dfq%E4%B8%8B%E8%BD%BD%E9%95%9C%E5%83%8F/
下载完成镜像之后部署
kubectl apply -f mandatory.yaml
值得注意的是这个yaml档并不包含service,创建service要使用下面这个yaml档
https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/baremetal/service-nodeport.yaml
把这个yaml档下载到本地,之后查看内容
apiVersion: v1 kind: Service metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx spec: type: NodePort ports: - name: http port: 80 targetPort: 80 protocol: TCP - name: https port: 443 targetPort: 443 protocol: TCP selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx
因为我们要实现文章图片上面这个状态,所以这个service还要写一个nodePort: 80和nodePort: 443字段,比如下面
apiVersion: v1 kind: Service metadata: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx spec: type: NodePort ports: - name: http port: 80 targetPort: 80 nodePort: 80 protocol: TCP - name: https port: 443 targetPort: 443 nodePort: 443 protocol: TCP selector: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginx
在apply这个service之前,我们要注意的是我们的apiserver 默认的node port端口范围是30000-32767,但是我们所需要的nodeport端口不在这个范围之内,所以要修改apiserver的nodeport端口
因为我是使用kubeadm搭建的集群,所以
编辑下面这个文件,
vim /etc/kubernetes/manifests/kube-apiserver.yaml
在command下新增
- --service-node-port-range=30-3000
之后保存即可,apiserver会自动重启并且应用配置,修改完成一个节点之后,其他的master节点也需要修改,保证apiserver的配置相同
接着应用这个yaml档即可
最后查看这个svc是否正常
kubectl get svc -A
如果正常的话我们测试一下
使用下面这个yaml档
#deploy apiVersion: apps/v1 kind: Deployment metadata: name: nginx-ingress spec: selector: matchLabels: app: nginx-ingress replicas: 1 template: metadata: labels: app: nginx-ingress spec: containers: - name: nginx-ingress image: nginx:1.15 ports: - containerPort: 80 --- #service apiVersion: v1 kind: Service metadata: name: nginx-ingress spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx-ingress --- #ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: name: nginx-ingress spec: rules: - host: nginx.bboysoul.com http: paths: - path: / backend: serviceName: nginx-ingress servicePort: 80
上面定义了三个对象一个是deployment,一个是service,最后一个是ingress ingress和service绑定,所以我们只要访问nginx.bboysoul.com就可以访问到这个deployment了
kubectl apply -f ingress-nginx.yaml
在外部dns里添加你k8smaster节点和nginx.bboysoul.com的解析,之后直接访问就可以了
欢迎关注Bboysoul的博客
Have Fun
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
CentOS 7下使用 yum 安装 Docker 部署运行项目
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。通过 uname -r 命令查看你当前的内核版本,如下图 uname -r 安装 Docker安装一些必要的系统工具: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 添加软件源信息: sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 更新 yum 缓存: sudo yum makecache fast 安装 Docker-ce: sudo yum -y install docker-ce 启动 Docker 后台服务 sudo systemctl start docker 测试运行 hello-world docker run hello-world 由于本地没有hello-world这个镜像,所以会下载一个hello-...
- 下一篇
ASP.NET Core on K8S深入学习(4)你必须知道的Service
本篇已加入《.NET Core on K8S学习实践系列文章索引》,可以点击查看更多容器化技术相关系列文章。 前面几篇文章我们都是使用的ClusterIP供集群内部访问,每个Pod都有一个自己的IP地址,那么问题来了:当控制器使用新的Pod替代发生故障的Pod时又或者增加新的副本Pod时,新Pod会分配到新的IP地址,那么想要对外提供服务时,客户端如何找到并访问这个服务?没关系,别抠脑壳了,本文介绍的Service就是解决方案。 一、认识Service 1.1 什么是Service? Service是一个抽象概念,它定义了逻辑集合下访问Pod组的策略。通过使用Service,我们就可以不用关心这个服务下面的Pod的增加和减少、故障重启等,只需通过Service就能够访问到对应服务的容器,即通过Service来暴露Pod的资源。 这样说可能还是有点难懂,举个例子,假设我们的一个服务Service A下面有3个Pod,我们都知道Pod的IP都不是持久化的,重启之后就会有变化。那么Service B想要访问Service A的Pod,它只需跟绑定了这3个Pod的Service A打交道就可以...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16