
简介
只是做记录,防止忘记。今天我们要实现的是文章图片上面这种访问方式.
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/bare l/service-nodeport.yaml
把这个yaml档下载到本地,之后查看内容
apiVersion: v1kind: Service data: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginxspec: 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: v1kind: Service data: name: ingress-nginx namespace: ingress-nginx labels: app.kubernetes.io/name: ingress-nginx app.kubernetes.io/part-of: ingress-nginxspec: 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档
#deployapiVersion: apps/v1kind: Deployment data: name: nginx-ingressspec: selector: matchLabels: app: nginx-ingress replicas: 1 template: data: labels: app: nginx-ingress spec: containers: - name: nginx-ingress image: nginx:1.15 ports: - containerPort: 80---#serviceapiVersion: v1kind: Service data: name: nginx-ingressspec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx-ingress---#ingressapiVersion: extensions/v1beta1kind: Ingress data: name: nginx-ingressspec: 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
继续阅读与本文标签相同的文章
开发者社区钉钉群拉新步骤详解
-
透过思科华为看(通信)世界
2026-05-20栏目: 教程
-
图数据库 Nebula Graph v.1.0.0-beta 已上线
2026-05-20栏目: 教程
-
从懵懂到成熟担当,支付宝首席架构师做了这三件事
2026-05-20栏目: 教程
-
探究Mysql索引底层的bmore树的非叶子节点数据为什么小于4kb
2026-05-20栏目: 教程
-
阿里云oss如何通过MultipartUpload向OSS上传大文件?
2026-05-20栏目: 教程
