学习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的Deployment
  namespace: yabin
  labels:                  # 指定Deployment的标签(可自定义多个),随意自定义即可,无需匹配其他
    app: nginx
spec:                      # Deployment的资源规格
  replicas: 1              # Deployment将创建1个Pod副本(默认为 1)
  selector:                # 匹配标签选择器,定义Deployment要管理的Pod,必须与Pod的template模板中定义的标签保持一致
    matchLabels:
      app: nginx
  template:                # 指定Pod模板
    metadata:              # 指定Pod的元数据
      labels:              # 指定Pod的标签(可自定义多个)
        app: nginx
    spec:                  # 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的name
  namespace: yabin # 命名空间,没有可以删除,默认是default
spec:
  selector:
    app: nginx # 关联容器标签(选择业务容器进行发布)
  ports:
  - port: 8000 # 集群内部服务之间访问service的入口
    targetPort: 80 # 容器的端口
    protocol: TCP
    nodePort: 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的Deployment
  namespace: yabin
  labels:                  # 指定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-app
    spec:                  # 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的name
  namespace: yabin # 命名空间,没有可以删除,默认是default
  labels:
      app: spring-boot-app
spec:
  selector:
    app: spring-boot-app # 关联容器标签,请求发到app一样的pod中
  ports:
  - port: 8001 ## 容器端口(项目指定的端口号)
    protocol: TCP
    nodePort: 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.mfbz.cn/a/328775.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mac python爬虫学习

首先推荐几个 必须要掌握的类库 Requests: HTTP for Humans 它是以这么一句话介绍自己的&#xff0c;为人类使用的HTTP库 http://docs.python-requests.org/zh_CN/latest/user/quickstart.html 中文文档 Beautifulsoup 用Beautiful Soup解析网站源代码 代替正则 https://…

【计算机网络】第七,八,九章摘要重点

第七章网络管理 1.计算机网络面临的两大威胁&#xff1f; 恶意程序有&#xff1a;计算机病毒&#xff0c;计算机蠕虫&#xff0c;特洛伊木马&#xff0c;逻辑炸弹&#xff0c;后门入侵和流氓软件。 2.安全的计算机网络四个目标&#xff1a; 机密性&#xff0c;端点鉴别&…

File.mkdir与File.mkdirs区别String.replace方法返回值

1、File.mkdir与File.mkdirs区别 File fnew File("C:\\a\\b"); mkdir 只创建最后一级目录 f.mkdir();只会创建b 若没有a 创建失败 mkdirs如上所述 创建a,b 当不确定目录是否存在时&#xff0c;最好用mkdirs 判断文件是否存在 文件夹是否存在 2、String.replace…

保送阿里云的云原生学习路线

近期好多人都有咨询学习云原生有什么资料。与其说提供资料不如先说一说应该如何学习云原生。 Linux基础知识&#xff1a;云原生技术通常在Linux环境中运行&#xff0c;因此建议首先掌握Linux的基础知识&#xff0c;包括命令行操作、文件系统、权限管理等。 容器化技术&#x…

Vue-24、Vue过滤器

1、效果 2、过滤器实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>过滤器</title><script type"text/javascript" src"https://cdn.jsdelivr.net/npm/vue2/dist/vue.…

二叉树的遍历 Java

二叉树的遍历 递归法前序遍历中序遍历后序遍历改进 迭代法前序、后序遍历中序遍历 二叉树的统一迭代法(未完成)Java 中 null、NULL、nullptr 区别 public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(in…

大数据技术原理与应用期末复习(林子雨)

大数据技术原理与应用期末复习&#xff08;林子雨&#xff09; Hadoop的特性HBase编程实践NoSQL的四大类型键值数据库优点&#xff1a;缺点&#xff1a; 列族数据库优点&#xff1a;缺点&#xff1a; 文档数据库优点&#xff1a;缺点&#xff1a; 图数据库优点&#xff1a;缺点…

模拟瑞幸小程序购物车

是根据渡一袁老师的大师课写的&#xff0c;如有什么地方存在问题&#xff0c;还请大家指出来哟ど⁰̷̴͈꒨⁰̷̴͈う♡&#xff5e; index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-e…

新增PostgreSQL数据库管理功能,1Panel开源面板v1.9.3发布

2024年1月15日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.9.3版本。 在这一版本中&#xff0c;1Panel新增了PostgreSQL数据库管理功能&#xff0c;并且支持设置PHP运行环境扩展模版。此外&#xff0c;我们进行了30多项功能更新和问题修复。1Panel应用…

如何应对Android面试官->RecyclerView回收复用LayoutManager,实战探探划一下

前言 上章我们讲了右半部分&#xff0c;本章我们讲解左半部分&#xff1b; 如何复用原理 我们在滑动的时候&#xff0c;才会触发 RecyclerView 的回收复用&#xff0c;所以我们从 RecyclerView 的 onTouchEvent 方法入手&#xff1b;我们来看下滑动的时候&#xff0c;是怎么…

SQL实践:利用tag检索文件的多种情况讨论(二)

在上一篇文章SQL实践&#xff1a;利用tag检索文件的多种情况讨论中&#xff0c;我们介绍了在使用外键的方式为数据关联tag后&#xff0c;如何筛选&#xff1a; 如何筛选包含某一个tag的数据如何筛选包含且只包含某一个tag的数据如何筛选包含多个指定tag的数据 这篇文章主要是…

LiveGBS流媒体平台GB/T28181功能-基础配置接入控制白名单黑名单配置控制设备安全接入设备单独配置接入密码

LiveGBS基础配置接入控制白名单黑名单配置控制设备安全接入设备单独配置接入密码 1、白名单配置应用场景2、接入控制2.1、白名单2.2、黑名单 3、搭建GB28181视频直播平台 1、白名单配置应用场景 LiveGBS国标流媒体服务&#xff0c;支持白名单配置。 可在设备注册前&#xff0…

机器学习_梯度下降

文章目录 什么是梯度梯度下降梯度下降有什么用 什么是梯度 计算梯度向量其几何意义&#xff0c;就是函数变化的方向&#xff0c;而且是变化最快的方向。对于函数f(x)&#xff0c;在点(xo,yo)&#xff0c;梯度向量的方向也就是y值增加最快的方向。也就是说&#xff0c;沿着梯度…

使用 Elasticsearch 和 LlamaIndex 进行高级文本检索:句子窗口检索

2023 年是检索增强生成 (RAG) 的一年&#xff0c;人们探索了许多用例&#xff0c;并使用该技术开发了数百种产品。 从 Q/A 聊天机器人到基于上下文的代理&#xff0c;RAG 的使用一直是 LLM 申请快速增长的主要因素。 支持不断发展的社区以及 Langchain 和 LlamaIndex 等强大框架…

Controller层自定义注解拦截request请求校验

一、背景 笔者工作中遇到一个需求&#xff0c;需要开发一个注解&#xff0c;放在controller层的类或者方法上&#xff0c;用以校验请求参数中(不管是url还是body体内&#xff0c;都要检查&#xff0c;有token参数&#xff0c;且符合校验规则就放行)是否传了一个token的参数&am…

Java工具类汇总

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; ExcelUtils public class ExcelUtils {/*** 注入的具有排序功能的handle*/private static final SortRowWriteHandler SORT_ROW_WRITE_HANDLER new SortRowWriteHan…

linux 网络文件共享服务

存储类型 DAS 直连式存储 SAN 存储区域网络 NAS 网络附近存储 FTP文件传输协议 文件传输协议 FTP 早期的三个应用级协议之一&#xff0c;基于c/s架构 数据传输格式&#xff1a;二进制&#xff08;默认&#xff09;和文本 tcp 21端口&#xff08;权限&#xff0c;…

centos7配置时间同步网络时间

centos7配置时间同步网络时间 1、安装 NTP 工具。 sudo yum install -y ntp2启动 NTP 服务。 sudo systemctl start ntpd3、将 NTP 服务设置为开机自启动。 sudo systemctl enable ntpd4、验证 date

超5000亿元,2024年国家电网预计电网建设投资总规模

近日&#xff0c;国家电网公司对外透露&#xff0c;2024年将继续加大数智化坚强电网的建设&#xff0c;促进能源绿色低碳转型&#xff0c;推动阿坝至成都东等特高压工程开工建设。围绕数字化配电网、新型储能调节控制、车网互动等应用场景&#xff0c;打造一批数智化坚强电网示…

WEB服务器-Tomcat

3. WEB服务器-Tomcat 3.1 简介 3.1.1 服务器概述 服务器硬件 指的也是计算机&#xff0c;只不过服务器要比我们日常使用的计算机大很多。 服务器&#xff0c;也称伺服器。是提供计算服务的设备。由于服务器需要响应服务请求&#xff0c;并进行处理&#xff0c;因此一般来说…
最新文章