学习k8s的应用(三)

一、k8s部署ngnix

1、一些查看命令

1-1、所有命令空间

kubectl get pod --all-namespaces
kubectl get svc --all-namespaces

1-2、指定命令空间

kubectl get pod -n yabin
kubectl get svc -n yabin

2、单节点集群兼容

# 因为目前只有一个master节点,默认安装后默认不会调度pod运行在master节点上,需要执行下列命令
kubectl taint nodes --all node-role.kubernetes.io/master-

在这里插入图片描述

3、部署ngnix,创建pod资源

sudo tee /app/nginx/nginx-deploy.yaml <<EOF
apiVersion: apps/v1        # 指定deployment的api版本; apps所属组,版本v1
kind: Deployment           # 指定创建资源的角色/类型 
metadata:                  # 指定Deployment的元数据name: nginx-deploy        # 创建名为nginx-deploy的Deploymentnamespace: yabinlabels:                  # 指定Deployment的标签(可自定义多个),随意自定义即可,无需匹配其他app: nginx
spec:                      # Deployment的资源规格replicas: 1              # Deployment将创建1个Pod副本(默认为 1)selector:                # 匹配标签选择器,定义Deployment要管理的Pod,必须与Pod的template模板中定义的标签保持一致matchLabels:app: nginxtemplate:                # 指定Pod模板metadata:              # 指定Pod的元数据labels:              # 指定Pod的标签(可自定义多个)app: nginxspec:                  # Pod的资源规格containers:          # 指定Pod运行的容器信息- name: nginx        # 指定Pod中运行的容器名image: nginx:1.20  # 指定Pod中运行的容器镜像与版本(不指定镜像版本号则默认为latest)ports:- containerPort: 80 # 指定容器的端口(即Nginx默认端口)
EOF

4、配置ngnix对外端口号(用于暴露服务)

sudo tee /app/nginx/nginx-svc.yaml <<EOF
apiVersion: v1
kind: Service
metadata:name: nginx-service # svc名称,对应 kubectl get svc的namenamespace: yabin # 命名空间,没有可以删除,默认是default
spec:selector:app: nginx # 关联容器标签(选择业务容器进行发布)ports:- port: 8000 # 集群内部服务之间访问service的入口targetPort: 80 # 容器的端口protocol: TCPnodePort: 30001 # nodeport映射为30001端口,便于外部主机访问type: NodePort # svc类型为nodeport
EOF

5、创建资源,对资源进行配置

kubectl apply -f nginx-deploy.yaml
kubectl apply -f nginx-svc.yaml

6、访问及测试

6-1、访问地址

http://121.5.167.170:30001/

6-2、通过kubectl命令进入容器

# ############ 执行进入容器命令模板 ############
kubectl exec -it podName -c containerName -n namespace -- shell comand
kubectl exec -it Pod名称 [-c 容器名称] [-n 命名空间] -- /bin/bash
# podName:是【kubectl get pod -n yabin】对应的name(如下图)
# containerName(非必须) :查看nginx-deploy.yaml中容器设置的名称
# -n namespace 命名空间:查看配置是否有设置命名空间,有就使用# ############ 进入容器方法 ############
kubectl exec -it nginx-deploy-6897679c4b-g7hl5 -c nginx -n yabin -- /bin/bash
kubectl exec -it nginx-deploy-6897679c4b-g7hl5 -n yabin -- /bin/bash

在这里插入图片描述

6-3、通过docker命令进入容器

# 容器ID:是docker ps的CONTAINER ID值
sudo docker exec -it 容器ID /bin/bash
# 进入容器方法
sudo docker exec -it 25fab27be87b /bin/bash

7、针对端口不同的处理方式

# 外部流量访问k8s集群中service入口
curl 121.5.167.170:30001
# 集群内部服务之间访问service的入口
curl 10.111.200.98:8000

在这里插入图片描述

二、部署springboot项目

1、创建镜像构建文件

# 设置JAVA版本:FROM <image>:<tag>
FROM openjdk:8-jdk-alpine# 在容器内创建一个挂载点 /logs,用于存储数据(作用不大)
VOLUME /logs# ADD和COPY 二选一
# 用于将本地文件或目录复制到容器中(对压缩包有解压拷贝):ADD <src> <dest>
ADD springboot-1.0.0.jar /app/app.jar# 入口点, 执行JAVA运行命令(app.jar在/app目录下)
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

2、构建镜像

docker build -t ImageName:TagName [-f filename] dir
# 示例
docker build -t spring-boot:1.0.0 -f dockerfile_boot .
# 构建镜像的模版
docker build -t ImageName:TagName dir
# 选项:
#    -t - 提到镜像的标签。
#    ImageName - 这是您要为镜像指定的名称。
#    TagName - 这是您要为镜像指定的标签。
#    dir - Dockerfile所在的目录。

3、docker运行容器,指定构建的镜像springboot

3-1、模版命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
#  option 作用,如下部分:
#    -d	守护进程,后台运行该容器
#    -p	指定端口映射,格式:主机(宿主)端口:容器端口

3-2、运行容器,指定镜像、容器名、端口号的示例

# 8001:8001 -> 前者是宿主机端口(外网访问端口),后者是容器需暴露的端口(项目端口)
docker run -d -p 8001:8001 --name spring-boot --privileged=true spring-boot:1.0.0
# 执行成功后,访问
http://121.5.167.170:8001/k8s/

3-3、docker方式进入、停止和删除容器

# 进入容器(不能使用/bin/sh,制作的镜像是精简版的,只装了sh命令,未安装bash)
sudo docker exec -it e8fc82f0567f /bin/sh# 列出运行中的容器( -n 1 指最近1个创建的容器)
docker ps -n 1# 停止或启动容器(如下图)
docker stop 容器ID/容器名称 -> docker stop e8fc82f0567f /spring-boot# 用来删除一个或者多个已经停止的 Docker容器
docker rm 容器ID/容器名称# 用于删除本地一个或多个 Docker镜像
docker rmi 镜像ID(IMAGE ID)

在这里插入图片描述

4、k8s运行容器,指定构建的镜像springboot

4-1、springboot-deploy.yaml 配置Pod

sudo tee /app/spring/springboot-deploy.yaml <<EOF
apiVersion: apps/v1        # 指定deployment的api版本
kind: Deployment           # 指定创建资源的角色/类型
metadata:                  # 指定Deployment的元数据name: spring-boot-deploy # 创建名为spring-boot-deploy的Deploymentnamespace: yabinlabels:                  # 指定Deployment的标签(可自定义多个),随意自定义即可,无需匹配其他app: spring-boot-app
spec:                      # Deployment的资源规格replicas: 1              # Deployment将创建1个Pod副本(默认为 1)selector:                # 定义Deployment管理的Pod,必须与Pod的template模板中定义的标签保持一致matchLabels:app: spring-boot-app # 匹配标签标识template:                # 指定Pod模板metadata:              # 指定Pod的元数据(当前标签是template下级标签)labels:              # 指定Pod的标签(可自定义多个)app: spring-boot-appspec:                  # Pod的资源规格containers:          # 指定Pod运行的容器信息- name: spring-boot-app    # 指定Pod中运行的容器名image: spring-boot:1.0.0 # 指定Pod中运行的容器镜像与版本(不指定镜像版本号则默认为latest)ports:- containerPort: 80 # 指定容器的端口(即Nginx默认端口)
EOF

4-2、对资源文件进行配置

kubectl apply -f springboot-deploy.yaml

4-3、springboot-svc.yaml配置Pod

sudo tee /app/spring/springboot-svc.yaml <<EOF
apiVersion: v1
kind: Service
metadata:name: spring-boot-service # svc名称,对应 kubectl get svc的namenamespace: yabin # 命名空间,没有可以删除,默认是defaultlabels:app: spring-boot-app
spec:selector:app: spring-boot-app # 关联容器标签,请求发到app一样的pod中ports:- port: 8001 ## 容器端口(项目指定的端口号)protocol: TCPnodePort: 30002 # nodeport映射为30002端口,便于外部主机访问type: NodePort # svc类型为nodeport
EOF

4-4、对资源文件进行配置

kubectl apply -f springboot-svc.yaml

4-5、访问地址

http://121.5.167.170:30002/k8s/

4-6、kubectl方式进入容器

kubectl exec -it podName -n yabin -- /bin/sh
podName:kubectl get pod -A 对应的name

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

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

相关文章

设计Twitter时间线和搜索功能

设计Twitter时间线和搜索功能 设计 facebook feed 和 设计 facebook search是相同的问题 第一步&#xff1a;定义用例和约束 定义问题的需求和范围&#xff0c;询问问题去声明用例和约束&#xff0c;讨论假设 ps: 没有一个面试官会展示详细的问题&#xff0c;我们需要定义一些用…

数据结构与算法-二叉树-层次遍历I

二叉树层次遍历I 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]思路&…

【征服redis1】基础数据类型详解和应用案例

博客计划 &#xff0c;我们从redis开始&#xff0c;主要是因为这一块内容的重要性不亚于数据库&#xff0c;但是很多人往往对redis的问题感到陌生&#xff0c;所以我们先来研究一下。 本篇&#xff0c;我们先看一下redis的基础数据类型详解和应用案例。 1.redis概述 以mysql为…

车载音频EMI的产生及典型音频功放AW836XX的解决方案

之前针对 eCall的文章中有提到D类音频功放需要关注EMI问题&#xff08;点击文章回看《车载eCall系统音频应用解决方案》&#xff09;&#xff0c;在此展开此问题并寻求解决方案。 1. EMI定义与分类 电磁干扰&#xff08;Electromagnetic Interference&#xff0c;EMI&#xff…

基于STM32的HX711示值放大器接口与驱动程序设计

将HX711示值放大器接口与STM32微控制器进行连接和驱动需要一定的硬件连接和软件编程。在这篇文章中&#xff0c;我们将介绍如何设计基于STM32的HX711示值放大器接口与驱动程序&#xff0c;并提供相应的代码示例。 1. 硬件连接 首先&#xff0c;我们需要将HX711示值放大器与STM…

openlayers [二] 初始化map 以及map的一些参数

文章目录 map 参数效果图代码分析 map 参数 controls 地图的控件 pixelRatio 设备上物理像素与设备无关像素&#xff08;dip&#xff09;之间的比率。 interactions 地图的互动 keyboardEventTarget 监听键盘事件的元素。这决定了KeyboardPan和 KeyboardZoom互动的触发时间。例…

残差网络 ResNet

目录 1.1 ResNet 2.代码实现 1.1 ResNet 如上图函数的大小代表函数的复杂程度&#xff0c;星星代表最优解&#xff0c;可见加了更多层之后的预测比小模型的预测离真实最优解更远了&#xff0c; ResNet做的事情就是使得模型加深一定会使效果变好而不是变差。 2.代码实现 impo…

网页设计(九)JavaScript基础应用

一、网页中文字的字号选择性改变 单击前初始状态页面 单击“中”链接后页面 文字素材&#xff1a;   JavaScript是一种能让你的网页更加生动活泼的程式语言&#xff0c;也是目前网页中设计中最容易学又最方便的语言。你可以利用JavaScript轻易的做出亲切的欢迎讯息、漂亮的…

web前端第二次

第一题&#xff1a; <!DOCTYPE html> <html> <head><title>计算奇数和</title> </head> <body><label for"input">请输入一个正整数&#xff1a;</label><input type"number" id"input&qu…

影响CSGO搬砖饰品价格上涨和下跌的原因有哪些

到底哪些情况下CSGO饰品价格会涨&#xff0c;哪些情况会跌&#xff0c;下面是一个混迹steam平台多年的老油条&#xff0c;一点个人见解&#xff0c;不喜吻喷。 首先&#xff0c;CSGO饰品的交易是从市场进行的&#xff0c;市场终究是市场&#xff0c;是自由买卖的&#xff0c;必…

VMware Vsphere 日志:用户 dcui@127.0.01已以vMware-client/6.5.0 的身份登录

一、事件截图&#xff1a; 二、解决办法 原因&#xff1a; 三、解决办法 1.开启锁定模式 2.操作 1、从清单中选择您的 ESXi 主机&#xff0c;然后转至管理 > 设置 > 安全配置文件&#xff0c;然后单击锁定模式的编辑按钮 2、在打开的锁定模式窗口中&#xff0c;选中启…

云服务器 云服务器概述-产品简介-文档中心-腾讯云

腾讯云服务器入门教程包括云服务器CPU内存带宽配置选择&#xff0c;选择云服务器CVM或轻量应用服务器&#xff0c;云服务器创建后重置密码、远程连接、搭建程序环境等&#xff0c;腾讯云服务器网txyfwq.com分享从0到1腾讯云服务器入门教程&#xff1a; 腾讯云服务器入门教程 …

CSDN 年度总结|知识改变命运,学习成就未来

欢迎来到英杰社区&#xff1a; https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区&#xff1a; https://bbs.csdn.net/topics/617897397 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff…

「许战海矩阵战略洞察」吉香居给调味品企业带来的战略启示

引言&#xff1a;吉香居通过实施份额化战略和打造形象产品&#xff0c;在调味品行业中取得了成功。但品牌结构需要调整&#xff0c;需要将子品牌整合到吉香居主品牌下&#xff0c;共同提升品牌势能。此外&#xff0c;企业需保持主品牌竞争战略&#xff0c;以实现长期稳定的高速…

transfomer中正余弦位置编码的源码实现

简介 Transformer模型抛弃了RNN、CNN作为序列学习的基本模型。循环神经网络本身就是一种顺序结构&#xff0c;天生就包含了词在序列中的位置信息。当抛弃循环神经网络结构&#xff0c;完全采用Attention取而代之&#xff0c;这些词序信息就会丢失&#xff0c;模型就没有办法知…

进阶Docker4:网桥模式、主机模式与自定义网络

目录 网络相关 子网掩码 网关 规则 docke网络配置 bridge模式 host模式 创建自定义网络(自定义IP) 网络相关 IP 子网掩码 网关 DNS 端口号 子网掩码 互联网是由许多小型网络构成的&#xff0c;每个网络上都有许多主机&#xff0c;这样便构成了一个有层次的结构。 IP 地…

SpringAOP-说说 Spring AOP 和 AspectJ AOP 区别

Spring AOP Spring AOP 属于运行时增强&#xff0c;主要具有如下特点&#xff1a; 基于动态代理来实现&#xff0c;默认如果使用接口的&#xff0c;用 JDK 提供的动态代理实现&#xff0c;如果是方法则使用 CGLIB 实现Spring AOP 需要依赖 IOC 容器来管理&#xff0c;并且只能…

浅谈安科瑞铁塔/基站电力监控解决方案

I.背景信息&#xff1a; 2020年5G元年&#xff0c;通信行业承蓬勃发展之态&#xff0c;各大运营商和铁塔集团在布局新一代通讯基站。基站用电量不断上升&#xff0c;通信基站智能化电力监控及节能管理已成为各运营商企业的研究方向。 而同时&#xff0c;目前铁塔基站电力使用…

靶机-basic_pentesting_2

basic_pentesting_2 arp-scan -l查找靶机IP masscan 192.168.253.154 --ports 0-65535 --rate10000 端口扫描 nmap扫描nmap -T5 -A -p- 192.168.253.154 目录扫描80端口 http://192.168.253.154/development/dev.txt 2018-04-23: I’ve been messing with that struts stu…

mipi协议

完成mipi信号通道分配后&#xff0c;需要生成与物理层对接的时序、同步信号&#xff1a; MIPI规定&#xff0c;传输过程中&#xff0c;包内是200mV、包间以及包启动和包结束时是1.2V&#xff0c;两种不同的电压摆幅&#xff0c;需要两组不同的LVDS驱动电路在轮流切换工作&#…