首页 > 系统相关 >k8s集群部署nginx服务以及外网访问nginx服务

k8s集群部署nginx服务以及外网访问nginx服务

时间:2023-12-01 16:33:05浏览次数:33  
标签:服务 定义 标签 端口 nginx deployment pod k8s

1、查看k8s进群状态

[root@k8s-master test]# kubectl get node
NAME         STATUS   ROLES    AGE   VERSION
k8s-master   Ready    master   16d   v1.15.1
k8s-node1    Ready    <none>   16d   v1.15.1

2、编写nginx服务yaml文件

kind: Namespace
apiVersion: v1
metadata:
  name: myserver #创建namespace

---


kind: Deployment
apiVersion: apps/v1       #可查询它的api版本 kubectl explain deployment.apiVersion
metadata:               #定义pod元数据信息,可查询它的下级子字段kubectl explain deployment.metadata
  labels:               #定义deployment控制器标签
    app: nginx-deployment-label  #标签名称以键值形式定义,可以定义多个,这里标签是app值为nginx-deployment-label
  name: nginx-deployment   #deployment资源的名字
  namespace: myserver          #deployment所属的namespace,默认是defaule
spec:                   #定义Deployment中容器的详细信息,可通过kubectl explain deployment.spec查询
  replicas: 1           #定义创建出pod的副本数,默认值是1个pod
  selector:             #定义标签选择器,它跟上面的Deployment标签不是一回事,它是找下面template中定义的labels标签
    matchLabels:        #定义匹配的标签,必须要设置
      app: nginx-selector       #匹配的目标标签,控制器会拿这个标签匹配下面的pod
  template:             #定义模板,用来描述需要创建的pod作用
    metadata:           #定义模板元数据
      labels:             #这个labels会继承给这个yaml文件Deployment控制器创建的所有pod
        app: nginx-selector   #这个labels的key是app,值是nginx-selector,它会继承给下面的pod,和上面matchLabels.app: nginx-selector一样
    spec:                  #定义pod的详细信息
      containers:          #定义pod中容器列表,可以定义多个pod
      - name: nginx-container     #容器名称
        image: nginx:1.20       #容器镜像
        imagePullPolicy: Always                       #镜像拉取策略
        ports:                    #定义容器端口列表
        - containerPort: 80     #定义一个端口
          protocol: TCP           #定义协议
          name: http              #端口名称
        - containerPort: 443
          protocol: TCP
          name: https
        env:                      #给容器传递环境变量
        - name: "password"        #变量名称,必须引号引起来
          value: "123"            #上面变量的值
        - name: "age"
          value: "18"
---
 
kind: Service
apiVersion: v1
metadata:
  name: nginx-service
  labels:
    app: nginx-service-label   #service资源的标签
  namespace: myserver          #所在的命名空间,与上面控制器必须在同一个命名空间
spec:
  type: NodePort          #service类型是NodePort  
  ports:                  #定义访问端口,一个service可以定义多个端口的映射关系
  - name: http            #定义协议名称
    port: 80              #定义service端口,它可以和pod,node端口都不同,它是K8S中一个独立子网
    protocol: TCP         #定义类型
    targetPort: 80        #目标pod端口,当访问宿主机30004端口时就会转达到pod的80端口
    nodePort: 30004       #手动指定node节点暴露的端口,如果没有指定端口,那service会随机分配一个端口
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
    nodePort: 30443
  selector:
    app: nginx-selector   #这个标签就是上面pod的标签,service通过这个标签来匹配对应的pod

3、运行nginx服务yaml文件

kubectl apply -f nginx.yaml

4、查看namespace信息

[root@k8s-master ~]# kubectl get ns | grep myserver
myserver          Active   49m

5、查看service信息

[root@k8s-master ~]# kubectl get svc -A | grep nginx 
myserver      nginx-service   NodePort    10.106.253.198   <none>        80:30004/TCP,443:30443/TCP   50m

6、查看pod信息

[root@k8s-master ~]# kubectl get pod -A | grep nginx 
myserver      nginx-deployment-68f5647649-bhbhq    1/1     Running   0          50m

7、访问nginx服务

 

标签:服务,定义,标签,端口,nginx,deployment,pod,k8s
From: https://www.cnblogs.com/zhang-xiao-shuang/p/17869994.html

相关文章

  • Windows下Nginx的重用命令及如何配置后台启动
    Windows下Nginx的常用命令在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动、停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍。1、启动注意:使用后台启动必须配置daemonon;startnginx【后台启动】nginx.exe【临时启动】2、停止nginx.exe-sstop或......
  • k8s安装mysql
    镜像:mysql:8.0.34apiVersion:apps/v1kind:Deploymentmetadata:name:mysqllabels:workload.user.cattle.io/workloadselector:apps.deployment-wfs-test-mysqlnamespace:wfs-testselector:matchLabels:workload.user.cattle.io/workloads......
  • k8s 安装kubevirt v0.59.0 (k3s v1.26.4)
    1.安装kubevirt-operator.yaml(可以直接指定VERSION=v0.59.0-alpha.2;可以直接先在浏览器访问github下载yaml)exportVERSION=$(curl-shttps://api.github.com/repos/kubevirt/kubevirt/releases|greptag_name|grep-v--'-rc'|sort-r|head-1|awk-F':'&#......
  • Sentinel 微服务保护
    Sentinel微服务保护​#Sentinel#​本文章为个人摘抄笔记,原文章来源于www.cnblogs.com/xiegongz...‍Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html雪崩问题与解决方式所谓的雪崩指的是:微服务之间相互调用,调用链......
  • Linux:查看MobaXterm已保存的服务器密码
    打开MobaXterm,Settings-->Configuration-->General--> MobaXtermpasswordsmanagement,选择需要查看的Session所在行,点击“Showpasswords”,弹出MobaXterm密码输入框......
  • 原生项目在nginx下如何启动
    原生项目在nginx下如何启动原生项目目录打开html页面,页面路径为调接口接口请求地址为这是不对的。正确的应该是,参考nginx配置,把路径修改file:///E:/sso/html-gov-js/html/index.html变成https://localhost/index.html就可以了。......
  • 【Nginx38】Nginx学习:SSL模块(二)错误状态码、变量及宝塔配置分析
    Nginx学习:SSL模块(二)错误状态码、变量及宝塔配置分析继续我们的SSL模块的学习。上回其实我们已经搭建起了一个HTTPS服务器了,只用了三个配置,其中一个是listen的参数,另外两个是指定密钥文件的地址,一个是crt文件,一个是key文件。今天我们将学习到的是SSL中的错误状态码、变......
  • Gradio-Lite: 完全在浏览器里运行的无服务器 Gradio
    Gradio是一个经常用于创建交互式机器学习应用的Python库。在以前按照传统方法,如果想对外分享Gradio应用,就需要依赖服务器设备和相关资源,而这对于自己部署的开发人员来说并不友好。欢迎Gradio-lite(@gradio/lite):一个通过Pyodide在浏览器中直接运行Gradio的库。在......
  • ubuntu部署gitlab服务器
    ubuntu部署gitlab服务器笔者使用的ubuntu版本为20.04,gitlab版本为16.2.1(此篇文章部分引用他人文件,单纯记录,如有侵权请联系)1、更新命令cd/homemkdirgitlabcd/gitlabsudoaptupdatesudoapt-getupgradesudoapt-getinstallcurlopenssh-serverca-certificates......
  • 个推文档 > 服务端 > C# > 快速入门
    转自:https://docs.getui.com/getui/server/csharp/start/.NETCore版本个推C#SDK支持.NetCore版本,可以到后面的网址去下载的.NetSDK(版本要求>=2.2):(https://dotnet.microsoft.com/download/)下载个推C#Demo, .NETCoredemo 目录结构如下图所示: ......