学习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.hqwc.cn/news/415215.html

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

相关文章

Java 方法(方法的调用机制、方法的传参机制)

方法 方法就是将一个功能抽取出来&#xff0c;把代码单独定义在一个大括号内&#xff0c;形成一个单独的功能。 当需要这个功能的时候&#xff0c;就可以去调用。这样即实现了代码的复用性&#xff0c;也解决了代码冗余的现象。 修饰符 返回值类型 方法名 &#xff08;参数列…

C练习——杨辉三角

题目&#xff1a; 打印近似杨辉三角&#xff0c;行数n自选 百度找的杨辉三角&#xff0c;参考一下&#xff1a; 解析&#xff1a; 把它的全部元素左对齐&#xff0c;就可以看成近似杨辉三角的样子 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …… 每个数等于它上方两数…

excel(vab)删除空行

删除第一、二、三列位空的所有行&#xff08;8000)行范围以内 代码如下&#xff1a; Sub Macro1()Dim hang As Integer For hang 8000 To 1 Step -1If Sheet1.Cells(hang, 1) "" And Sheet1.Cells(hang, 2) "" And Sheet1.Cells(hang, 3) "&quo…

怎么处理vue项目中的错误详解

文章目录 一、错误类型二、如何处理后端接口错误代码逻辑问题全局设置错误处理生命周期钩子 三、源码分析小结参考文献 一、错误类型 任何一个框架&#xff0c;对于错误的处理都是一种必备的能力 在 Vue 中&#xff0c;则是定义了一套对应的错误处理规则给到使用者&#xff0…

C++ 设计模式之 中介者模式

【声明】本题目来源于卡码网&#xff08;题目页面 (kamacoder.com)&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是中介者模式 &#xff08;第16种模式&#xff09; 中介者模式&#xff08;Medi…

如何在 Element Plus 中使用自定义 icon 组件 (非组件库内置icon)

先说原理就是将 svg 文件以 vue 组件文件的方式使用 需求&#xff1a;我想要在 Element Plus 得评分组件中使用自定义得图标。 el-rate v-model"value1" /> 组件本身是支持自定义图标的&#xff0c;但是教程中只说明了如何使用 element-plus/icons-vue 图标库内置…

TortoiseSVN客户端如何安装配置并实现公网访问服务端提交文件到本地服务器

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统&#xff0c;它与Apache Subversion&#xff08;SVN&#xff09;集成在一起&#xff0c;提供了一个用户友好的界面&#xff0c;方便用…

vue写了debugger谷歌浏览器打开控制台没进断点

vue代码中打了断点&#xff0c;谷歌打开f12进不了断点解决方案如下 1、打开谷歌浏览器控制台&#xff0c;点击设置 2、在 Ignore List 中将“Enable Ignore Listing”勾选去掉&#xff0c;然后就可以正常使用debugger了

【计算机硬件】3、输入输出技术、总线结构

文章目录 输入输出技术内存与接口地址的编址方法1、 内存与接口地址独立编址方法2、内存与接口地址统一编址方法 计算机和外设间的数据交互方式1、程序控制(查询)方式2、程序中断方式3、DMA方式&#xff08;直接主存存取&#xff09; 总线结构 输入输出技术 内存与接口地址的编…

tessreact训练字库

tessreact主要用于字符识别&#xff0c;除了使用软件自带的中英文识别库&#xff0c;还可以使用Tesseract OCR训练属于自己的字库。 一、软件环境搭建 使用Tesseract OCR训练自己的字库&#xff0c;需要安装Tesseract OCR和jTessBoxEditor(配套训练工具)。jTessBoxEditor需要…

关于java的继承

关于java的继承 我们在上一篇文章中&#xff0c;了解到了封装&#xff0c;我们本篇文章来介绍一下面向对象的第二大特点&#xff0c;继承&#xff0c;还是遵循结合现实生活中的实际情况&#xff0c;理解着去学习&#xff0c;能更好的加深印象&#x1f600;。 一、继承 继承的…

flink 1.18 sql gateway /sql gateway jdbc

一 sql gateway 注意 之所以直接启动gateway 能知道yarn session 主要还是隐藏的配置文件&#xff0c;但是配置文件可以被覆盖&#xff0c;多个session 保留最新的applicationid 1 安装flink &#xff08;略&#xff09; 2 启动sql-gatway(sql-gateway 通过官网介绍只能运行…