学习k8s的应用(三)

news2024/10/6 22:30:48

一、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.coloradmin.cn/o/1390824.html

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

相关文章

workflow源码解析:ThreadTask

1、使用程序&#xff0c;一个简单的加法运算程序 #include <iostream> #include <workflow/WFTaskFactory.h> #include <errno.h>// 直接定义thread_task三要素 // 一个典型的后端程序由三个部分组成&#xff0c;并且完全独立开发。即&#xff1a;程序协议算…

解决C语言wprintf函数无法打印中文的问题

在Visual Studio中&#xff0c;wchar_t[]字符数组用来存储UTF-16编码的字符串&#xff0c;但C语言库函数wprintf无法打印含有汉字的wchar_t字符串。 解决办法是用WriteConsoleW函数重新实现一个自己的my_wprintf函数。 #include <stdio.h> #include <Windows.h>//…

PDF文件中字体乱码的一种简单的处理方法

要解决问题先得碰到问题&#xff0c;碰到问题就迈出了解决问题的关键一步。 问题PDF文件的下载链接 这文件用Acrobat打开&#xff0c;无法搜索文本&#xff0c;复制文本出来也都是乱码。但用sumatra PDF打开就不存在这个问题&#xff01; 用Acrobat的印前检查解决。prefligh…

Python网络爬虫进阶:自动切换HTTP代理IP的应用

前言 当你决定做一个网络爬虫的时候&#xff0c;就意味着你要面对一个很大的挑战——IP池和中间件。这两个东西听起来很大上&#xff0c;但其实就是为了让你的爬虫不被封杀了。下面我就来给你讲讲如何搞定这些东西。 第一步&#xff1a;创建爬虫IP池的详细过程 首先&#xf…

电商数据分析--常见的数据采集工具及方法

数据采集|数据运营和数据分析 走进数据&#xff0c;一起学习数据处理&#xff0c;数据分析&#xff0c;数据挖掘&#xff0c;一起成长&#xff0c;相信通过一起努力&#xff0c;未来2-3年我们都会成为公司的中流砥柱。懂数据&#xff0c;会分析&#xff0c;会挖掘&#xff0c;…

mathtype2024版本下载与安装(mac版本也包含在内)

安装包补丁主要是mathtype的安装包&#xff0c;与它的补丁。 详细安装过程&#xff1a; step1&#xff1a; 使用方法是下载完成后先安装MathType-win-zh.exe文件&#xff0c;跟着步骤走直接安装就行。 step2&#xff1a; 关闭之后&#xff0c;以管理员身份运行MathType7PJ.exe…

【linux】visudo

碎碎念 visudo命令是用来修改一个叫做 /etc/sudoers 的文件的&#xff0c;用来设置哪些 用户 和 组 可以使用sudo命令。并且使用visudo而不是使用 vi /etc/sudoers 的原因在于&#xff1a;visudo自带了检查功能&#xff0c;可以判断是否存在语法问题&#xff0c;所以更加安全 …

单节点部署 Gpmall 商城系统

目录 实验中使用的技术 实验过程 实验中使用的技术 Java Redis Elasticsearch&#xff08;先不用&#xff09; Nginx MariaDB ZooKeeper Kafka 实验过程 1.Xnode1克隆虚拟机gpmall CRT连接&#xff08;root密码&#xff1a;000000&#xff09; 2修改主机名 [root…

纵行科技参加“十四五”国家重点研发计划课题“工业化建造自动识别与数据采集(AIDC)成套技术”工程试点

近期&#xff0c;“十四五”国家重点研发计划NQI课题组“产学研用”联合团队开展的“工业化建造自动识别与数据采集&#xff08;AIDC&#xff09;成套技术”工程建造场景集成应用试点&#xff08;第一阶段&#xff09;&#xff0c;在广州白云国际机场T3航站楼项目西指廊及北港湾…

uniapp使用安装sass

1.首先你要安装node-sass npm install node-sass --save-dev2.安装sass-loader npm install sass-loader --save-dev3.修改style标签&#xff0c;声明使用sass <style lang"scss" scoped>

AI工具(20240116):Copilot Pro,Fitten Code等

Copilot Pro Copilot Pro是微软推出的Copilot的付费增强版本,通过提供优先访问GPT-4等最新AI模型,大大提升用户的创造力和工作效率。该服务可与Microsoft 365订阅捆绑使用,支持在Word、Excel等Office应用内直接使用Copilot功能,帮助用户更快速地起草文档、电子邮件和演示文稿等…

【CV】使用 matplotlib 画统计图,并用 OpenCV 显示静图和动图

1. 效果 静图 动图 2.思路 准备数据使用 pyplot 画统计图图片写入流&#xff0c;流转图&#xff08;numpy&#xff09;matplotlib 颜色 RGB 转 OpenCV 颜色 BRG 4. 静图 代码过程有注释&#xff0c;很简单的实现。注意 matplotlib RGB 转 OpenCV BGR image image[:, :,…

刘知远LLM入门到实战——自然语言基础

文章目录 自然语言处理基础词表示语言模型N-gram ModelNeural Language Model: 为什么NLP等领域的模型越来越大&#xff1f; 大模型会带来哪些新的范式和挑战&#xff1f; 自然语言处理基础 让计算机理解人类语言&#xff0c;图灵测试就是基于对话的方式。 研究历史&#xff…

shell简单截取curl GET返回的body消息体

目录 需求背景&#xff1a; 示例&#xff1a; 解决方式&#xff1a; 需求背景&#xff1a; 用shell解析 curl命令GET到的消息体&#xff0c;获取body消息体里的某个字段的值,只是个简单的示例&#xff0c;可以在此基础上更改满足自己的需求 示例&#xff1a; curl一个API…

pytorch一致数据增强—独用增强

前作 [1] 介绍了一种用 pytorch 模仿 MONAI 实现多幅图&#xff08;如&#xff1a;image 与 label&#xff09;同用 random seed 保证一致变换的写法&#xff0c;核心是 MultiCompose 类和 to_multi 包装函数。不过 [1] 没考虑各图用不同 augmentation 的情况&#xff0c;如&am…

鸿蒙使用 axios

1、已安装ohpm&#xff0c;可参考上一篇 2、回到项目的根目录执行 ohpm install ohos/axios 安装成功后&#xff0c;查看项目的package 3、开放网络权限 在模块的module.json5中添加权限 "module": {"requestPermissions": [{"name": "…

【FastAPI】路径参数(二)

预设值 如果你有一个接收路径参数的路径操作&#xff0c;但你希望预先设定可能的有效参数值&#xff0c;则可以使用标准的 Python Enum 类型。 导入 Enum 并创建一个继承自 str 和 Enum 的子类。通过从 str 继承&#xff0c;API 文档将能够知道这些值必须为 string 类型并且能…

智能时代,让AI为你撰写专业应用文

大家好我是在看&#xff0c;记录普通人学习探索AI之路。 何谓应用文&#xff1f;简单来说&#xff0c;应用文是指在日常生活中以及工作中撰写的&#xff0c;旨在传递信息、处理事务的一种文体类型。其范畴广泛&#xff0c;涵盖了诸如请假条、通知书、辞职信、检查报告、欠条、…

回归预测 | Matlab实现MSADBO-CNN-LSTM基于改进蜣螂算法优化卷积神经网络-长短期记忆神经网络多特征回归预测

回归预测 | Matlab实现MSADBO-CNN-LSTM基于改进蜣螂算法优化卷积神经网络-长短期记忆神经网络多特征回归预测 目录 回归预测 | Matlab实现MSADBO-CNN-LSTM基于改进蜣螂算法优化卷积神经网络-长短期记忆神经网络多特征回归预测预测效果基本描述程序设计参考资料 预测效果 基本描…

分布式搜索引擎ElasticSearch——基础

分布式搜索引擎ElasticSearch——基础 文章目录 分布式搜索引擎ElasticSearch——基础初识elasticsearch什么是elasticsearchelasticsearch的发展正向索引和倒排索引安装elasticsearch&#xff0c;kibana部署单点es创建网络加载镜像运行 部署kibana部署DevTools 安装IK分词器在…