Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >kubernetes部署应用简明demo

kubernetes部署应用简明demo

原创
作者头像
小金狗子
修改于 2021-03-19 06:16:19
修改于 2021-03-19 06:16:19
69200
代码可运行
举报
运行总次数:0
代码可运行

当前项目基于kubernetes运行和部署,挑选了核心且基本的步骤做一个demo。

A和B两个应用,A作为server,在内部公开一个接口,返回主机名(以下srvu),B接收外部HTTP请求,并调用A的接口(以下callu)。

定义Deployment为A和B两个应用创建POD

代码语言:yaml
AI代码解释
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: call-deployment
  labels:
    app: call
spec:
  replicas: 1 
  selector:
    matchLabels:
      app: call
  template:
    metadata:
      labels:
        app: call
    spec:
      containers:
      - name: call
        image: callu:1
        env:
        - name: rpc.server.host
          valueFrom:
            configMapKeyRef:
              name: myconf
              key: rpc.server.host
        - name: rpc.server.port
          valueFrom:
            configMapKeyRef:
              name: myconf
              key: rpc.server.port
        ports:
        - containerPort: 8080
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: srvu-deployment
  labels:
    app: srvu
spec:
  replicas: 2
  selector:
    matchLabels:
      app: srvu
  template:
    metadata:
      labels:
        app: srvu
    spec:
      containers:
      - name: srvu
        image: srvu:1
        ports:
        - containerPort: 15001

A应用服务工作在15001,B应用通过环境变量获取A的地址和端口号,值来源于configmap。其中host是srvu的服务名。

代码语言:yaml
AI代码解释
复制
apiVersion: v1
kind: ConfigMap 
metadata: 
  name: myconf
data:
  rpc.server.host: srvu-service
# 数字用引号  
  rpc.server.port: "15001"

通过定义service将服务暴露出去,A只需要内部访问,所以用默认clustip即可

代码语言:yaml
AI代码解释
复制
apiVersion: v1
kind: Service
metadata:
  name: srvu-service
spec:
  selector:
    app: srvu
  ports:
  - protocol: TCP
    port: 15001
    targetPort: 15001

此处metadata下的name的值和configmap中的host相同。

B应用需要向集群外暴露,使用不怎么推荐的node port是最简单的方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: v1
kind: Service
metadata:
  name: call-service
spec:
  type: NodePort
  selector:
    app: call
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080
    nodePort: 31808

部署完成后效果

在node上执行的效果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 curl http://127.0.0.1:31808/call?key=advb
srvu-deployment-8685bd447f-998j2
 curl http://127.0.0.1:31808/call?key=advb
srvu-deployment-8685bd447f-jtwtg
 curl http://127.0.0.1:31808/call?key=advb
srvu-deployment-8685bd447f-998j2
 curl http://127.0.0.1:31808/call?key=advb
srvu-deployment-8685bd447f-998j2
 curl http://127.0.0.1:31808/call?key=advb
srvu-deployment-8685bd447f-998j2
 curl http://127.0.0.1:31808/call?key=advb
srvu-deployment-8685bd447f-jtwtg

在我的例子中使用java编写以上两个应用,打包成docker image。

在以上例子中环境变量包含'.',刚开始docker file中写的

ENTRYPOINT ["/bin/sh", "callu.sh"]

启动后无法获取到环境变量,因sh不支持,所以在做例子的时候要记得改成bash或者直接使用java等命令运行应用。

如果你想将配置挂在成文件系统上的一个文件

代码语言:yaml
AI代码解释
复制
kubectl create configmap my-config --from-file=path/to/bar
代码语言:yaml
AI代码解释
复制
apiVersion: v1
data:
  fcon.yml: |
    rpc.server.host=srvu-service
    rpc.server.port=15001
kind: ConfigMap
metadata:
  name: fconf
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: call-deployment
  labels:
    app: call
spec:
  replicas: 1 
  selector:
    matchLabels:
      app: call
  template:
    metadata:
      labels:
        app: call
    spec:
      containers:
      - name: call
        image: callu:1
        volumeMounts:
        - name: confvol
          mountPath: "/app/serverinfo.prop"
          subPath: fcon.yml
        ports:
        - containerPort: 8080
      volumes:
      - name: confvol
        configMap:
          name: fconf

/app/serverinfo.prop就包含了fcon.yml的内容。此处必须填写subPath,否则serverinfo.prop是一个文件夹

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用 Elastic Stack 构建 Kubernetes 全栈监控(1/4)
在本系列文章中,我们将学习如何使用 Elastic 技术栈来为 Kubernetes 构建监控环境。可观测性的目标是为生产环境提供运维工具来检测服务不可用的情况(比如服务宕机、错误或者响应变慢等),并且保留一些可以排查的信息,以帮助我们定位问题。总的来说主要包括3个方面:
我是阳明
2020/06/30
1.1K0
使用 Elastic Stack 构建 Kubernetes 全栈监控(1/4)
【运维路不弯】kubernetes部署kubernetes-dashboard
指剑
2023/12/28
3070
【运维路不弯】kubernetes部署kubernetes-dashboard
kubernetes核心实战(九) --- Ingress
若未安装可以查看官网文档:kubernetes.github.io/ingress-ngi…
小陈运维
2021/12/06
4410
mac 上学习k8s系列(9)nginx-ingress lua
本篇将在mac 上学习k8s系列(8)external auth的基础上基于nginx-ingress 的access_by_lua_block +redis 来实现一个全局的rate limiter:用nginx lua连接redis,用redis计数来做集群粒度的rate-limit。
golangLeetcode
2022/08/02
1.1K0
从零搭建Kubernetes下的nignx和tomcat
i 创建nfs持久化存储,持久化存储用于存储前端静态文件和pod产生日志文件。
用户5166556
2019/12/25
1.2K0
安装kubernetes集群
其中,PWK 是试验性质的免费的 Kubernetes 集群,只要有 Docker 或者 Github 账号就可以在浏览器上一键生成 Kubernetes 集群。但是它有诸多限制,例如一次只能使用 4 个小时,并且有扩展性和性能等问题。所以 PWK 一般只用于教学或者试验。
Michel_Rolle
2023/11/23
3.2K0
研发工程师玩转Kubernetes——使用Ingress进行路由
依据微服务理念,我们希望每个独立的功能由一个服务支持。比如有两个接口:http://www.xxx.com/plus和http://www.xxx.com/minus,前者由一个叫plus-service的服务支持,后者由一个叫minus-service的服务支持。这样就需要一个路由层,在前方将/plus请求路由到plus-service;将/minus路由到minus-service。本文介绍的ingress就可以起到路由的作用。
方亮
2023/05/31
3740
研发工程师玩转Kubernetes——使用Ingress进行路由
在kubernetes集群中部署nginx+mysql+php应用
本文将介绍在kubernetes环境中部署一套php应用系统。前端web采用nginx、中间件php以fastcgi的方式运行,后台数据库由mysql主从提供支撑。 各服务组件之间的调用采用dns解析服务名的方式进行,数据和配置文件持久化采用hostPath。
菲宇
2019/06/12
4.7K1
在kubernetes集群中部署nginx+mysql+php应用
【K8S专栏】Kubernetes应用访问管理
在Kubernetes中,提供了Service和Ingress两种对象来实现应用间访问或外部对集群应用访问,这两种对象在实际的工作中会时长使用,非常重要的对象。
没有故事的陈师傅
2022/12/06
1.7K0
【K8S专栏】Kubernetes应用访问管理
Kubernetes实战之部署ELK Stack收集平台日志
ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。
没有故事的陈师傅
2019/12/11
5.8K0
Kubernetes学习笔记
Pod: kubernetes管理的主要对象,可以由一个或者共享资源的一组容器组成 kubelet: 管理worker node和master node之间的通信 kube-proxy: 运行在work node上,用于管理Node和Pod的网络通信 API Server: 提供API服务 Scheduler: 选择worker node运行Pod Controller: 监控Pod数量,控制worker node Worker node: 运行Pod的机器或者虚拟机 Master node: 运行Control Plane的机器或者虚拟机
宅蓝三木
2024/10/09
1840
Kubernetes学习笔记
traefik系列之二 | 路由(ingressRoute)
基于 centos7.9,docker-ce-20.10.18,kubelet-1.22.3-0, traefik-2.9.10
Amadeus
2023/04/27
2.6K0
traefik系列之二 | 路由(ingressRoute)
2022-03-12:k8s如何搭建gogs+drone实现自动化部署cicd,yaml如何写?
2022-03-12:k8s如何搭建gogs+drone实现自动化部署cicd,yaml如何写?
福大大架构师每日一题
2022/03/12
9570
Kubernetes搭建LNMP环境并部署wordpress
1、在镜像仓库上,构建镜像,创建文件夹,将相应的文件放入,Dockerfile和安装包放在百度网盘了,这里就不多介绍了。
kubernetes中文社区
2019/06/24
2.5K0
Kubernetes搭建LNMP环境并部署wordpress
Kubernetes 中部署 Zabbix
Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。
YP小站
2020/06/04
2.5K0
Kubernetes 中部署 Zabbix
部署loki采集kubernetes容器日志
Grafana Loki is a set of components that can be composed into a fully featured logging stack. Unlike other logging systems, Loki is built around the idea of only indexing metadata about your logs: labels (just like Prometheus labels). Log data itself is then compressed and stored in chunks in object stores such as Amazon Simple Storage Service (S3) or Google Cloud Storage (GCS), or even locally on the filesystem. A small index and highly compressed chunks simplifies the operation and significantly lowers the cost of Loki.
锅总
2024/06/12
3120
部署loki采集kubernetes容器日志
你还在用YAML编排K8s吗?看看这篇吧
由于 YAML的局限,它是配置文件,不够灵活,所以我便写了这个程序,目前还没有进入 Release 阶段。等我用一段时间,稳定了,就会升级。
netkiller old
2021/10/20
5090
在k8s上部署metersphere
本次演示环境使用metersphere版本:v1.13.0 设置k8s节点包括1台master和1台worker; 应用部署控制管理器使用deployment; 持久化存储使用hostPath写入到NFS挂载目录。 NFS挂载方式如下: 在master配置了nfs服务,并将nfs共享目录/nfs_storage挂在到了两个节点中的/opt/nfs; 如下图所示:
范一刀
2021/11/18
1.6K0
在k8s上部署metersphere
Kubernetes部署Yapi平台
yapi项目 https://github.com/YMFE/yapi/tags 镜像 https://hub.docker.com/r/jayfong/yapi 创建资源清单 vim yapi.yaml apiVersion: v1 kind: Namespace metadata: name: yapi --- apiVersion: v1 kind: Service metadata: name: mongo namespace: yapi labels: app: mongo
院长技术
2022/03/23
1.7K0
Kubernetes部署策略详解
在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。
胡齐
2020/07/03
1.2K0
相关推荐
使用 Elastic Stack 构建 Kubernetes 全栈监控(1/4)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档