Kubernetes之使用Kubernetes部署Nginx服务

Stella981
• 阅读 1047

  使用k8s部署Nginx服务,Nginx对外提供服务只希望部署在其中一台主机,该主机不提供其他服务

一.设置标签及污点

  为了保证nginx之能分配到nginx服务器需要设置标签和污点,设置标签可以让Pod选择该服务器部署,设置污点可以使其他服务Pod无法部署在该服务器

  本次部署nginx服务器IP为192.168.1.232

  设置标签

#设置标签 key为typevalue为nginx
kubectl label node 192.168.1.232  type=nginx
#查看标签
kubectl get node 192.168.1.232 --show-labels
NAME            STATUS   ROLES    AGE   VERSION   LABELS
192.168.1.232   Ready    <none>   30h   v1.17.4   kubernetes.io/arch=amd64,kubernetes.io/hostname=192.168.1.232,kubernetes.io/os=linux,type=nginx

   设置污点

#给node192.168.1.232设置污点key为key值为nginx effec为NoSchedule永不调度
#除非在Pod里设置了对应的tolerations参数
kubectl taint node 192.168.1.232 key=nginx:NoSchedule

   查看污点

kubectl describe node 192.168.1.232

 Kubernetes之使用Kubernetes部署Nginx服务   

二.设置Nginx-deployment的yaml文件

# cat nginx-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.14.0
        name: nginx
      #标签选择器
      nodeSelector:
        type: nginx
      #设置污点可以调度到对应服务器
      tolerations:
      - key: "key"
        operator: "Equal"
        value: "nginx"
        effect: "NoSchedule"

   应用启动

kubectl apply -f nginx-deployment.yaml

   查看已经调度到对应的服务器

# kubectl get pod -o wide
NAME                                    READY   STATUS    RESTARTS   AGE     IP            NODE            NOMINATED NODE   READINESS GATES
nginx-deployment-57f94c46b4-5whb5       1/1     Running   0          6h30m   172.17.97.3   192.168.1.232   <none>           <none>

三.设置Nginx配置文件和程序根目录挂载

  启动的Nginx使用默认的配置文件和默认的网站根目录,需要使用volume挂载

# cat nginx-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx:1.14.0
        name: nginx
        volumeMounts:
        - name: conf
          mountPath: /etc/nginx
        - name: opt
          mountPath: /opt
      #标签选择器
      nodeSelector:
        type: nginx
      #设置污点可以调度到对应服务器
      tolerations:
      - key: "key"
        operator: "Equal"
        value: "nginx"
        effect: "NoSchedule"
      volumes:
      - name: conf
        hostPath:
          path: /etc/nginx
          type: Directory
      - name: opt
        hostPath:
          path: /opt
          type: Directory

   本次使用了本机挂载hostPath挂载配置文件及根目录,生产环境最好使用pvc挂载

四.设置Service对外提供服务

# cat nginx-service.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  ports:
  - port: 80
    name: nginx-service80
    protocol: TCP
    targetPort: 80
    nodePort: 80   
  - port: 81
    name: nginx-service81
    protocol: TCP
    targetPort: 81
    nodePort: 81 
  selector:
    app: nginx
  type: NodePort

   PS:使用NodePort启用端口对外提供服务,如果对外映射多个端口需要在port参数下加参数name定义名称,单个端口无需设置参数name

          k8s默认使用NodePort对外映射端口为30000-50000如需要映射其他端口需要修改配置文件/opt/kubernetes/cfg/kube-apiserver,修改端口范围

Kubernetes之使用Kubernetes部署Nginx服务

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
芝士年糕 芝士年糕
2年前
Nginx 调整文件上传大小限制
使用3A服务器做了网页,感觉挺不错的,使用LNMP环境用Nginx部署了前端,发现上传附件大一点就会报错,查看配置文件,发现spring的附件配置已经配置了。那么就看下Nginx的body设置。nginx文件上传默认是1MB。在server
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Souleigh ✨ Souleigh ✨
3年前
前端也要懂 - 带你全面认识 Nginx
前言作为一名前端开发人员,你是不是经常碰到领导让你上服务器去修改Nginx配置,然而你会以“我是前端,这个我不会”为理由搪塞过去呢!今天就让我们一起告别这种尴尬,向“真正”的程序员迈进!!!Nginx概述Nginx是开源、高性能、高可靠的Web和反向代理服务器,而且支持热部署,几乎可以做到7\24小时不间
Stella981 Stella981
3年前
Nginx 代理到Jetty 页面跳转端口改变问题
 Nginx安装 Windows下部署Nginx只需下载安装包,解压启动服务器即可。下载官网:http://nginx.org/en/download.html   操作Nginx首先进入安装文件夹: 查看版本  Nginxv 启动服务  startnginx  正常关闭服务
Stella981 Stella981
3年前
Nginx安装部署
web服务器Nginx安装部署nginx源码下载官网:http://nginx.org/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fnginx.org%2F)http://nginx.org/dow
Stella981 Stella981
3年前
Nginx的反向调度功能
1.案例实现Nginx反向代理;2.反向代理的理论知识拓展.一,实验Nginx的反向代理功能 使用Nginx实现Web反向代理功能,实现如下功能:后端Web服务器两台,可以使用httpd实现Nginx采用轮询的方式调用后端Web服务器两台Web服务器的权重要求设置为不同的值最大失败次数为1,失败超时时间为
Wesley13 Wesley13
3年前
1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))
容器化部署一套云服务系列1\.容器化部署一套云服务之Jenkins(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fjackson0714%2Fp%2Fdeploy1.html)一、购买服务器服务器!caeef00
Wesley13 Wesley13
3年前
nginx中文手册内容说明
1.什么是nginx?Nginx是一个高性能的Web和反向代理服务器,它具有有很多非常优越的特性:作为Web服务器:相比Apache,Nginx使用更少的资源,支持更多的并发连接,体现更高的效率,这点使Nginx尤其受到虚拟主机提供商的欢迎。能够支持高达50,000个并发连接数的响应,感谢Nginx为我们选择了e
Stella981 Stella981
3年前
Nginx
!(https://imagestatic.segmentfault.com/255/117/25511790966008dc5b00fd8)Nginx进程模型分析在介绍Nginx的进程模型之前我们先来给大家解释下一些常见的名词,这能辅助我们更好的了解Nginx的进程模型。作为Web服务器,设计的初衷就是为了能够处理更多的客户端的请