docker 部署_Nginx K8s + Docker 部署 ,虚拟机部署教程。

6a14f1bb4026a6374d0d6360ac3b0347.png

Nginx K8s + Docker 部署 ,虚拟机部署教程!

Linux 虚拟机 部署

1、下载nginx:

http://nginx.org/download/

2、选择一个版本进行下载:

wget http://nginx.org/download/nginx-1.14.0.tar.gz

3、解压:

tar -xvf nginx-1.14.0.tar.gz

4、安装依赖包:

yum -y install gcc pcre-devel zlib-devel openssl openssl-devel

5、编译、安装

cd $NGINX_HOME./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_realip_modulemakemake install

6、修改nginx.conf

#user  nobody;worker_processes  1;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {    worker_connections  1024;}http {    include       mime.types;    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  logs/access.log  main;    sendfile        on;    #tcp_nopush     on;    #keepalive_timeout  0;    keepalive_timeout  65;    #gzip  on;    upstream admin-server {        server 10.68.60.100:18060    max_fails=2  fail_timeout=30;        server 10.68.60.101:18060    max_fails=2  fail_timeout=30;        server 10.68.60.110:18060    max_fails=2  fail_timeout=30;    }      upstream api-server {        server 10.68.60.100:18082    max_fails=2  fail_timeout=30;        server 10.68.60.101:18082    max_fails=2  fail_timeout=30;        server 10.68.60.110:18082    max_fails=2  fail_timeout=30;    }    server {                listen                  8080;                server_name             api-server;                keepalive_timeout       30;                location / {                        proxy_pass http://api-server;                        proxy_set_header X-Forwarded-Host $host;                        proxy_set_header X-Forwarded-Server $host;                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                        proxy_set_header Host $host:$server_port;                }    }    server {                listen                  8081;                server_name             admin-server;                keepalive_timeout       30;                proxy_set_header X-Forwarded-Host $host;                proxy_set_header X-Forwarded-Server $host;                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                proxy_set_header Host $host:$server_port;                location / {                        proxy_pass http://admin-server;                        proxy_set_header X-Forwarded-Host $host;                        proxy_set_header X-Forwarded-Server $host;                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                        proxy_set_header Host $host:$server_port;                }    }}

7、启动nginx:

$NGINX_HOMT/sbin/nginx

8、重启nginx:

$NGINX_HOMT/sbin/nginx -s stop$NGINX_HOMT/sbin/nginx

9、热更新:

$NGINX_HOMT/sbin/nginx -s reload

Docker + k8s 部署

前提:假定你已经安装并集成好docker和k8s基础环境!

1、创建docker构建目录:

mkdir -p /opt/docker/build/nginx

2、下载nginx:

cd /opt/docker/build/nginxwget http://nginx.org/download/nginx-1.14.0.tar.gz

3、编写Dockerfile,内容如下:

FROM ansible/centos7-ansibleADD nginx-1.14.0.tar.gz /RUN mkdir -p /opt/soft &&\  mkdir -p /opt/tarball &&\  mkdir -p /opt/src &&\  touch /opt/daemon.log &&\  mv /nginx-1.14.0 /opt/src &&\  yum -y install gcc pcre-devel zlib-devel openssl openssl-devel &&\  cd /opt/src/nginx-1.14.0 &&\  ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_realip_module &&\  make &&\  make install &&\  cp -R /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeENTRYPOINT [ "sh", "-c", "/usr/local/nginx/sbin/nginx && tail -f /opt/daemon.log" ]

4、构建docker 镜像:

cd /opt/docker/build/nginxdocker build --network host -t 10.68.60.103:5000/nginx:1.14.0 -f Dockerfile .

注意:10.68.60.103:5000需要根据你自己的docker私服地址修改。

5、推送镜像到私服:

docker push 10.68.60.103:5000/nginx:1.14.0

6、编写k8s nginx-deployment.yaml文件,内容如下:

apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx-deployment  namespace: my-namespace  labels:    app: nginx-deploymentspec:  replicas: 1  selector:    matchLabels:      app: nginx-pod  template:    metadata:      labels:        app: nginx-pod    spec:      nodeSelector:        deploy.nginx: "true"      restartPolicy: Always      containers:      - name: nginx-container        image: "10.68.60.103:5000/nginx:1.14.0"        ports:#        - containerPort: 80        volumeMounts:        - mountPath: "/usr/local/nginx/conf/nginx.conf"          name: "nginx-volume-conf"        - mountPath: "/usr/local/nginx/logs"          name: "nginx-volume-log"      imagePullSecrets:      - name: regcred      volumes:      - name: "nginx-volume-conf"        hostPath:          path: "/opt/apps-mgr/nginx/conf/nginx.conf"          type: File      - name: "nginx-volume-log"        hostPath:          path: "/opt/apps-mgr/nginx/logs"          type: DirectoryOrCreate

注意:/opt/apps-mgr/nginx/conf/nginx.conf文件需要提前配置好,笔者这里配置文件如下:

#user  nobody;worker_processes  1;#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {    worker_connections  1024;}http {    include       mime.types;    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  logs/access.log  main;    sendfile        on;    #tcp_nopush     on;    #keepalive_timeout  0;    keepalive_timeout  65;    #gzip  on;    upstream admin-server {        server 10.68.60.100:18060    max_fails=2  fail_timeout=30;        server 10.68.60.101:18060    max_fails=2  fail_timeout=30;        server 10.68.60.110:18060    max_fails=2  fail_timeout=30;    }      upstream api-server {        server 10.68.60.100:18082    max_fails=2  fail_timeout=30;        server 10.68.60.101:18082    max_fails=2  fail_timeout=30;        server 10.68.60.110:18082    max_fails=2  fail_timeout=30;    }    server {                listen                  8080;                server_name             api-server;                keepalive_timeout       30;                location / {                        proxy_pass http://api-server;                        proxy_set_header X-Forwarded-Host $host;                        proxy_set_header X-Forwarded-Server $host;                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                        proxy_set_header Host $host:$server_port;                }    }    server {                listen                  8081;                server_name             admin-server;                keepalive_timeout       30;                proxy_set_header X-Forwarded-Host $host;                proxy_set_header X-Forwarded-Server $host;                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                proxy_set_header Host $host:$server_port;                location / {                        proxy_pass http://admin-server;                        proxy_set_header X-Forwarded-Host $host;                        proxy_set_header X-Forwarded-Server $host;                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                        proxy_set_header Host $host:$server_port;                }    }}

初步可以先用默认的配置,等启动成功后再修改,修改后需要进入Pod重启Nginx,进入命令如下:

kubectl get pods -A | grep nginxkubectl exec -it -n my-namespace nginx-deployment-5dcf489c44-f9c4r/usr/local/nginx/sbin/nginx -s stop && /usr/local/nginx/sbin/nginx

另外nodeSelector部分作用是指定nginx运行在某个节点上。需要提前通过下面命令给指定节点打上标签,例如指定允许在node2时:

kubectl label nodes node2 deploy.nginx=true

7、执行deployment:

kubectl apply -f nginx-deployment.yamlkubectl get pods -Akubectl -n my-namespace describe pod xxxxxkubectl -n my-namespace get events

8、编写k8s nginx-service.yaml文件,内容如下:

apiVersion: v1kind: Servicemetadata:  namespace: my-namespace  name: nginx-api-server-servicespec:  type: NodePort  selector:    app: nginx-pod  ports:    - protocol: TCP      port: 8080      targetPort: 8080      nodePort: 8080---apiVersion: v1kind: Servicemetadata:  namespace: my-namespace  name: nginx-admin-server-servicespec:  type: NodePort  selector:    app: nginx-pod  ports:    - protocol: TCP      port: 8081      targetPort: 8081      nodePort: 8081

9、执行service:

kubectl apply -f nginx-service.yamlkubectl get service -Akubectl -n my-namespace describe service xxxxxkubectl -n my-namespace get events

---------- 正文结束 ----------

长按扫码关注微信公众号

469e706ba37b358fd943f1570932d706.png

Java软件编程之家

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双机热备_双机热备软件哪个好?双机热备软件推荐

服务器维护和管理是企业健康稳定运营的一项重要工作,而双机热备可以提供服务器的高可用性。但是成熟好用的双机热备软件有哪些呢?下面就给大家推荐几款。微软MSCSMSCS(Microsoft Cluster Service)实际上是微软自带的,不…

Json和Xml

一、前言 学习心得&#xff1a;C# 入门经典第8版书中的第21章《Json和Xml》 二、Xml的介绍 Xml的含义&#xff1a; 可标记性语言&#xff0c;它将数据以一种特别简单文本格式储存。让所有人和几乎所有的计算机都能理解。 XML文件示例&#xff1a; <?xml version"1.…

ec20驱动_物联网基础:移远EC20固件升级

使用移远 QFlash_V4.14 工具升级移远 EC20 4G模块固件1 准备工作 1.1 EC20 USB驱动安装安装过程参考移远官方手册&#xff1a;《Quectel_LTE&5G_Windows_USB_Driver_安装指导_V1.0.pdf》&#xff0c;有详细USB安装指导&#xff0c;该手册及驱动文件可以去移远官方下载或后续…

的微波感知_上海交大彭志科教授团队研发:微波微动监测与智能感知技术

上海9月18日电(葛俊俊) 准确监测方舱医院大量感染患者的生命状况&#xff0c;精确“诊断”大桥工程结构是否存在安全隐患&#xff0c;随时随地获取独居老人在家的健康体征……上海交通大学彭志科教授团队研发的基于微波感知的微动监测与环境智能前瞻技术&#xff0c;像一种神奇…

小米笔记本引导修复_知识帖,笔记本电脑不能开机?你可以试试这些办法

大家经常遇到电脑开机不能进入系统的时候是不是特别难受,朝歌后面几篇文章会讲讲一些常见的电脑问题和解决办法啦 前面有一个系列的文章都是在组装电脑的问题,大家感兴趣的可以关注了去主页看看呀 在现在的日常生活里,笔记本电脑对于很多人来说会比台式机重要的多,因为笔记…

java同步锁synchronized_synchronized、锁、多线程同步的原理是咋样的?

先综述个结论&#xff1a;一般说的synchronized用来做多线程同步功能&#xff0c;其实synchronized只是提供多线程互斥&#xff0c;而对象的wait()和notify()方法才提供线程的同步功能。一般说synchronized是加锁&#xff0c;或者说是加对象锁&#xff0c;其实对象锁只是synchr…

python追加_如何在Python中追加文件?

慕田峪7331174 您需要在附加模式下打开文件&#xff0c;方法是将“a”或“ab”设置为模式。见open&#xff08;&#xff09;。使用“a”模式打开时&#xff0c;写入位置将始终位于文件末尾&#xff08;附加&#xff09;。您可以使用“a ”打开以允许读取&#xff0c;向后搜索和…

系统相机裁剪比例_拍不出好照片,你缺的不是好手机而是相机设置的秘笈

玩转手机摄影&#xff0c;每天分享原创的手机摄影教程&#xff0c;手机相机功能、人像、风光、夜景、创意拍摄技巧&#xff0c;还有后期调色、修图等教程&#xff0c;欢迎感兴趣的朋友点击右上角&#xff0c;关注我们&#xff01;--------------------------------------------…

任意点 曲线距离_中级数学11-曲线函数

距离、中点、圆抛物线椭圆双曲线非线性方程曲线本章介绍曲线及其性质。这里应用两圆锥体构成的推覆体与一个平面相交的截面&#xff0c;形成的曲线。从左到右截面&#xff1a;圆、抛物线、椭圆、双曲线距离、中点、圆应用勾股定理可求出三角形各边的长度。同样在直角坐标系中&a…

opencv 边缘平滑_基于OpenCV的车道检测实现(一)

无人驾驶的话题日趋起热&#xff0c;而车道线检测对于无人驾驶的路径规划来讲特别重要。要遵守交通规则&#xff0c;首先的要求便是对车道线检测&#xff0c;而且通过检测车道线可以进一步的检测地面指示标志、进行前碰撞预警策略设计等。早早就对OpenCV感兴趣&#xff0c;但迟…

字符串equal_Java String:字符串常量池

作者&#xff1a;Seven_Nee来自&#xff1a;https://segmentfault.com/a/1190000009888357作为最基础的引用数据类型&#xff0c;Java 设计者为 String 提供了字符串常量池以提高其性能&#xff0c;那么字符串常量池的具体原理是什么&#xff0c;我们带着以下三个问题&#xff…

cubemx串口的发送与接收_串口收发模块设计

串口收发模块设计作者&#xff1a;巩文宏 公众号&#xff1a;数字积木 该串口收发模块有串口发送模块&#xff0c;串口接收模块&#xff0c;波特率生成模块&#xff0c;发送数据fifo模块&#xff0c;接收数据的fifo模块组成。 默认配置下&#xff0c;要求输入的参考时钟为50MHz…

字段类型 sqoop_数据迁移工具Sqoop

熬过去&#xff0c;出众。熬不过&#xff0c;出局。这是最真实的人生&#xff0c;人都是熬过来的。Sqoop 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具&#xff0c;它是Hadoop环境下连接关系数据库与Hadoop存储系统的桥梁&#xff0c;支持多种关系型数据源和Hive、…

git 删除tag_git使用教程9pycharm 使用 tag 打标签

前言当我们的代码完成了第一阶段的需求&#xff0c;版本稳定后&#xff0c;希望能出个稳定版本。于是在 commit 后需要打个 tag 标签&#xff0c;也就是我们平常说的版本号&#xff0c;如v1.0版本本篇讲解如何使用 pycharm 打 tag 标签&#xff0c;并推送到 github 上&#xff…

模块 python_Python入门基础:模块基础

模块是一个文件(.py文件)&#xff0c;包含变量&#xff0c;类定义语句和与特定任务相关的功能。预先装有Python的Python模块称为标准库模块。创建我们的模块我们将创建一个名为tempConversion.py的模块&#xff0c;该模块将值从F转换为C&#xff0c;反之亦然。# tempConversion…

hash地址_深入浅出一致性Hash原理

一、前言在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上&#xff0c;这样每台服务器固定处理一部分请求&#xff08;并维护这些请求的信息&#xff09;&#xff0c;起到负载均衡的作用。但是普通的余数hash&#xff08;hash(比如用…

go语言io reader_Go语言中的io.Reader和io.Writer以及它们的实现

在使用Go语言的过程中&#xff0c;无论你是实现web应用程序&#xff0c;还是控制台输入输出&#xff0c;又或者是网络操作&#xff0c;不可避免的会遇到IO操作&#xff0c;使用到io.Reader和io.Writer接口。也也许对这两个接口和相关的一些接口很熟悉了&#xff0c;但是你脑海里…

hive 开窗函数_Hive的架构剖析

本文主要介绍Hive的架构和以及HQL的查询阶段&#xff0c;主要内容包括&#xff1a;Hive的架构架构中的相关组件介绍HQL的查询阶段Hive的架构hive的基本架构图如下图所示&#xff1a;相关组件介绍数据存储Hive中的数据可以存储在任意与Hadoop兼容的文件系统&#xff0c;其最常见…

ntr模式_ntr什么意思?求详细解释。。。

展开全部是俚语&#xff0c;表示环境的意32313133353236313431303231363533e59b9ee7ad9431333433623738思。1、语法&#xff1a;(1)可指影响人们生活的各种抽象和具体的“状况&#xff0c;环境”。可以接由that引导的主语从句&#xff0c;从句中的谓语动词一般要用虚拟式(多为动…

小程序switch内部加上文字_文字游戏大全:模拟游戏会长经营公会的小程序,你会管理公会吗?...

40000游戏爱好者已加入我们&#xff01;每天推荐好玩游戏&#xff01;加入我们&#xff0c;沐沐带你发现好游戏&#xff01;《游戏会长》游戏小程序好玩吗&#xff1f;《游戏会长》小游戏怎么玩&#xff1f;只有你想不到&#xff0c;没有我找不到的好游戏&#xff01;「良心好游…