当前位置: 首页 > news >正文

k8s 部署 Nginx 并代理到tomcat

一、已有信息

[root@master nginx]# kubectl get nodes -o wide

 

[root@master nginx]# kubectl get svc
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes      ClusterIP   10.96.0.1       <none>        443/TCP          25h
tomcatservice   NodePort    10.102.227.68   <none>        8080:30010/TCP   128m

这里可以看到,集群中已经有一个tomcat集群,cluster-ip是 10.102.227.68 ,外部访问端口为30010,内部通讯端口为:8080。通过192.168.206.138:30010可以打开tomcat的欢迎界面。

这里要增加一个Nginx服务,并成功代理到tomcat页面中去。

tomcat服务怎么启动,请看:k8s 使用tomcat官方镜像部署集群并解决访问页面404-CSDN博客

二、制作Nginx镜像

1,下载一个官方镜像

docker pull nginx
docker tag docker.io/nginx:latest nginx:v1

2,因为要代理到tomcat服务中去,所以默认的nginx.conf必须要更改,如下:

cat nginx.conf
############################################
user  nginx;
worker_processes  auto;
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;keepalive_timeout  65;server {listen       80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.html index.htm;}location /tomcat/ {proxy_pass   http://10.102.227.68:8080/;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   /usr/share/nginx/html;}}
}

其中:

        新增了一个location,代理到tomcat clusterip的8080

       location /tomcat/ {
               proxy_pass   http://10.102.227.68:8080/;
                }

        

3,新建一个Dockerfile,创建属于自己的Nginx镜像:

cat Dockerfile
############################################
FROM nginx:v1
RUN rm -rf /etc/nginx/nginx.conf
ADD ./nginx.conf /etc/nginx/

执行创建镜像命令:

docker build -t nginx:v3 .

4,将nginx:v3 镜像上传到自有harbor集群:

docker tag nginx:v3 192.168.206.137/library/nginx:v3
docker push  192.168.206.137/library/nginx:v3

要注意:在单台服务器上创建的image,使用K8s部署时,其他节点默认是获取不到这个镜像的,会导致发布失败。

5,调试镜像需要注意

在镜像创建完成之后,最好现在docker里面启动一下试试。但是要注意的是,nginx官方镜像在k8s和docker集群中自动会起来。但是上面通过dockerfile创建的镜像,在docker调试时需要docker exec进入后执行:nginx 。

三、创建nginx.yaml,用来部署Nginx服务到集群

vim nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploy
spec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: mynginximage: 192.168.206.137/library/nginx:v3ports:- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:name: nginxservice
spec:type: NodePortports:- port: 80targetPort: 80nodePort: 30080selector:app: nginx

要注意:

        1,image: 192.168.206.137/library/nginx:v3,必须要配置harbor的完整路径,保证集群内的服务器都可以自动下载改镜像。否者会报错找不到image

        2,nodePort: 30080,这个nodePort定义的是外部访问端口,取值在30000--32767,不自定义的话,系统会默认分配一个此区间内未使用的端口。如果定义的值不在此区间会报错:

The Service "nginxservice" is invalid: spec.ports[0].nodePort: Invalid value: 80: provided port is not in the valid range. The range of valid ports is 30000-32767
 

四、使用kubectl 部署nginx.yaml

kubectl create -f nginx.yaml

完成之后检查相关信息:

kubectl get svc
kubectl get nodes -o wide
kubectl get pods -o wide

如下:

 五、访问

通过上图可以看到,nginx默认部署在了master节点 192.168.206.138,使用:

http://192.168.206.138:30080/tomcat/

即可成功访问到tomcat服务的欢迎界面

http://www.lryc.cn/news/285420.html

相关文章:

  • 医学图像的数据增强技术 --- 切割-拼接数据增强(CS-DA)
  • git克隆/拉取报错过早的文件结束符(EOF)的原因及解决
  • 【ARM 嵌入式 编译系列 2.5 -- GCC 编译参数学习 --specs=nano.specs选项 】
  • C语言大师(5)构造函数和析构函数
  • 安全审查常见要求
  • 最新 生成pdf文字和表格
  • 安全基础~攻防特性3
  • Windows7关闭谷歌浏览器提示“若要接收后续 Google Chrome 更新,您需使用 Windows 10 或更高版本”的方法
  • [一]ffmpeg音视频解码
  • k8s-认证授权 14
  • 在全志H616核桃派上实现USB摄像头的OpenCV颜色检测
  • mac安装部署gitbook教程
  • 有关软件测试的,任何时间都可以,软件测试主要服务项目:测试用例 报告 计划
  • 快乐过寒假,安全不放假
  • qt学习:模仿qq界面+添加资源+无边框界面+修改样式
  • 【Linux】基本指令收尾
  • 精准核酸检测 - 华为OD统一考试
  • LINUX文件fd(file descriptor)文件描述符
  • SpringMVC 的理解
  • SpringBoot 3.1.7 集成Sentinel
  • Elastic Stack 8.12:通过对 ES|QL 等的改进增强了向量搜索
  • 结构体的内存对齐(计算题常考点)
  • 设置Json对象输出字段顺序
  • 当 OpenTelemetry 遇上阿里云 Prometheus
  • 【Flink-1.17-教程】-【四】Flink DataStream API(1)源算子(Source)
  • 【蓝桥杯EDA设计与开发】资料汇总以及立创EDA及PCB相关技术资料汇总(持续更新)
  • JavaEE学习笔记 2024-1-18 --模块化Controller层、AJAX与JSON
  • rpc跨平台通信的简单案例,java和go
  • Java设计模式之观察者模式详解
  • 分布式锁实现(mysql,以及redis)以及分布式的概念