【Kubernetes】k8s 部署指南
1. k8s 入门
1.1 k8s 简介
需要最需要明确的就是:kubernetes(简称 k8s ) 是一个 容器编排平台 ,换句话说就是用来管理容器的,相信学过 Docker 的小伙伴对于容器这个概念并不陌生,打个比方:容器就是一个 “程序的隔离运行环境”,屏蔽了底层 OS 实现以及一些其余资源的依赖

1.2 k8s 基本概念
作为初学者,我们只需要了解 k8s 当中有这些概念即可:
- Pod:实例
- Service:逻辑上的服务,可以认为是你业务上某个微服务的直接映射
- Deployment:管理 Pod 的东西
如何来理解 Pod 和 Service 的关系?
- 简单来说你有一个订单服务(OrderService)需要部署三个实例做集群部署,那么在 k8s 中就对应有一个 order 的 Service,对应三个 Pod 实例
如何来理解 Pod 和 Deployment 的关系?
- 简单来说 Deployment 就是一个运维管家,你要求有三个 Pod 那么多启动一个 Deployment 就会帮你自动删除一个;如果有一个宕机了,那么 Deployment 就会帮你自动重启一个
2. k8s windows 安装
参考文档:https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/
此处我们在 Windows 平台使用curl命令来安装kubectl工具方便操作 k8s:curl.exe -LO "[https://dl.k8s.io/release/v1.32.0/bin/windows/amd64/kubectl.exe"](https://dl.k8s.io/release/v1.32.0/bin/windows/amd64/kubectl.exe")

3. k8s 部署极简 Go 应用
❗ 注意:
- 为了方便入门,本教程仅部署一个简单使用 gin 框架搭建的 Web 系统,没有用到 MySQL 和 Redis 等其他中间件依赖
- 请确保您的主机上已经安装好了 Docker 环境,因为后期需要使用 Docker 制作镜像和运行容器
步骤一:首先准备好一段需要运行的 go 代码:
package mainimport ("github.com/gin-gonic/gin""net/http"
)func main() {server := gin.Default()server.GET("/hello", func(ctx *gin.Context) {ctx.String(http.StatusOK, "k8s hello world!")})server.Run(":8080")
}
步骤二:在命令行中交叉编译这段代码为 Linux 环境下的可执行文件:GOOS=linux GOARCH=arm go build -o k8s_demo .

步骤三:编写 Dockerfile 制作镜像:docker build -t ricejson/demo:v0.0.1 .(步骤二和步骤三你也可以使用 Makefile 文件编写)
# 使用哪个基础镜像
FROM ubuntu:20.04
# 拷贝当前目录k8s_demo到工作目录中
COPY k8s_demo /app/k8s_demo
# 设定工作根目录
WORKDIR /app
# 启动脚本
ENTRYPOINT ["/app/k8s_demo"]

步骤四:编写 k8s Deployment 文件:
apiVersion: apps/v1
kind: Deployment
metadata:name: demo-service
spec:# 副本数replicas: 3# 选择器selector:matchLabels:app: demotemplate:metadata:labels:app: demospec:containers:- name: demoimage: ricejson/demo:v0.0.1ports:- containerPort: 8080
步骤五:编写 k8s Service 文件:
apiVersion: v1
kind: Service
metadata:name: demo
spec:selector:app: demoports:- protocol: TCPport: 80targetPort: 8080type: NodePort
步骤六:需要在 Docker 设置中启用 enable kubernetes

步骤七:借助kubectl工具启动:kubectl apply -f k8s-demo-deployment.yaml

步骤八:借助kubectl工具启动:kubectl apply -f k8s-demo-service.yaml
步骤九:配置端口转发:kubectl port-forward <pod-name> 8080:8080

此时就可以在本地访问到了!
4. k8s 配置文件参数含义
下面就来简单解释下 k8s 配置文件当中的一些参数含义:
Deployment 文件:
- apiVersion:由于 k8s 是一个配置驱动的框架,因此需要让 k8s 知道如何来解读这个配置文件,就需要指定apiVersion
- spec:就是 Deployment 的规格说明书
- replicas:副本数量,就是你要管理多少个 Pod
- selector:筛选器,就是告知 Deployment 在那么多的 pod 中,究竟哪些 Pod 由该 Deployment 进行管理
- template:告诉 Deployment 究竟如何创建每一个 Pod
- template:需要特别指定容器 containers,容器需要指定镜像 image
Service 文件:
- type:这里是选择负载均衡策略
- ports:配置端口
- port:外部访问的端口
- protocol:端口监听的协议
- targetPort:转发请求的时候,应该转发到 Pod 的哪个端口上
相关文章:
【Kubernetes】k8s 部署指南
1. k8s 入门 1.1 k8s 简介 需要最需要明确的就是:kubernetes(简称 k8s ) 是一个 容器编排平台 ,换句话说就是用来管理容器的,相信学过 Docker 的小伙伴对于容器这个概念并不陌生,打个比方:容器…...
深度解析:使用 Headless 模式 ChromeDriver 进行无界面浏览器操作
一、问题背景(传统爬虫的痛点) 数据采集是现代网络爬虫技术的核心任务之一。然而,传统爬虫面临多重挑战,主要包括: 反爬机制:许多网站通过检测请求头、IP地址、Cookie等信息识别爬虫,进而限制…...
iOS事件传递和响应
背景 对于身处中小公司且业务不怎么复杂的程序员来说,很多技术不常用,你可能看过很多遍也都大致了解,但是实际让你讲,不一定讲的清楚。你可能说,我以独当一面,应对自如了,但是技术的知识甚多&a…...
JDK最详细安装教程,零基础入门到精通,收藏这篇就够了
目录 一、下载与安装二、配置环境三、验证是否配置成功 一、下载与安装 1、下载地址 http://www.oracle.com/technetwork/java/javase/downloads/index.html 2、选择自己想要的版本下载,并且选择自己电脑对应的版本下载 3、下载完成之后,双击打开然后…...
深研究:与Dify建立研究自动化应用
许多个人和团队面临筛选各种网页或内部文档的挑战,以全面概述一个主题。那么在这里我推荐大家使用Dify,它是一个用于LLM应用程序开发的低代码,开源平台,它通过自动化工作流程的多步搜索和有效汇总来解决此问题,仅需要最小的编码。 在本文中,我们将创建“ Deepresearch”…...
新手向:SpringBoot后端查询到数据,前端404?(附联调时各传参方式注解总结-带你一文搞定联调参数)
前言: 在 Spring Boot 项目开发中,后端小伙伴可能经常遇到这样诡异的场景: 后台日志显示查询到了数据,但前端却一脸懵逼地告诉你 404 Not Found?接口明明写好了,Postman 直接访问却提示找不到?…...
Mysql各操作系统安装全详情
" 至高无上的命运啊~ " MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Mana…...
RadASM环境,win32汇编入门教程之七
;运行效果 ;RadASM环境,win32汇编入门教程之七 ;在上一个教程里面,我们学习如何把数据显示出来。但是感觉太丑了,在这一教程里,我们来学习一下怎样让它们变漂亮点。 ;主要的内容是如何创建字体,设置字体的大小…...
STL之string类的模拟实现
目录 1. string的成员变量 2. string的成员函数 2.1 string类的c_str()和swap()函数 2.2 string类的构造 2.3 string类的拷贝构造 2.3.1传统写法: 2.3.2现代写法: 2.4string类的运算符重载 2.4.1传统写法: 2.4.2现代写法 2. 5 …...
定期自动统计大表执行情况
一、创建用户并赋权 create user dbtj identified by oracle default tablespace OGGTBS;grant connect,resource to dbtj;grant select any dictionary to dbtj;grant create job to dbtj;grant manage scheduler to dbtj; 二、创建存储表 1、连接到新建用户 conn dbtj/or…...
学习next.js的同时的一些英语单词记录
skip :跳过 optional:可选的 previous:以前的 lesson:课程 directory:目录 identical:相同的 instruction:说明 development server:开发服务器 client-side:客户…...
ok113i平台——qt+tslib支持usb触摸屏热插拔功能实现
问题:重新插拔设备,需要软件重启才能接收到触摸事件 愿因:是因为qt程序的tslib库的操作逻辑是在构造函数里面连接一次usb触摸设备,具体看如下文件内容: /home/forlinx/OK113i-linux-sdk/buildroot/buildroot-201902/dl…...
游戏引擎学习第112天
黑板:优化 今天的内容是关于优化的,主要讨论了如何在开发中提高代码的效率,尤其是当游戏的帧率出现问题时。优化并不总是要将代码做到最快,而是要确保代码足够高效,以避免性能问题。优化的过程是一个反复迭代的过程&a…...
深度学习笔记——LSTM
大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍面试过程中可能遇到的LSTM知识点。 文章目录 LSTM(Long Short-Term Memory)LSTM 的核心部件LSTM 的公式和工作原理(1) 遗忘门&a…...
基于SpringBoot的“食物营养分析与推荐网站”的设计与实现(源码+数据库+文档+PPT)
基于SpringBoot的“食物营养分析与推荐网站”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面 系统注册…...
23种设计模式 - 工厂方法模式
模式定义 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,定义用于创建对象的接口,让子类决定实例化哪个类,从而将对象创建过程延迟到子类。其核心目的是解耦对象的创建与使用,增强系统的扩展…...
【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析①】
ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase01 作者:车端域控测试工程师 更新日期:2025年02月16日 关键词:UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-001测试用例 用例ID测试场景验证要点参考条款预期结果TC…...
Discuz! X3.5 根目录权限设置
在 Discuz! X3.5 中,根目录的权限设置是确保网站安全性和功能正常运行的关键。如果权限设置不当,可能会导致文件无法访问、安全问题(如文件被篡改)或功能异常。以下是关于 Discuz! X3.5 根目录权限设置的详细说明和建议: 1. 根目录位置 Discuz! X3.5 的根目录通常是网站的…...
建筑兔零基础自学python记录22|实战人脸识别项目——视频人脸识别(下)11
这次我们继续解读代码,我们主要来看下面两个部分; 至于人脸识别成功的要点我们在最后总结~ 具体代码学习: #定义人脸名称 def name():#预学习照片存放位置path M:/python/workspace/PythonProject/face/imagePaths[os.path.join(path,f) f…...
React之旅-02 创建项目
创建React项目,常用的方式有两种: 官方提供的脚手架,官网:https://create-react-app.dev/。如需创建名为 my-app 的项目,请运行如下命令: npx create-react-app my-app 使用Vite包,官网&…...
uniapp 滚动尺
scale组件代码(部分class样式使用到了uview1.0的样式) <template><view><view class"scale"><view class"pointer u-flex-col u-col-center"><u-icon name"arrow-down-fill" size"26&qu…...
Redux中间件redux-thunk和redux-saga的具体区别是什么?
Redux 中间件是增强 Redux 功能的重要工具,redux-thunk 和 redux-saga 是两个常用的中间件,它们在处理异步操作和副作用时提供了不同的方式和理念。以下是两者的具体区别: 1. 概念与设计理念 redux-thunk 简洁:redux-thunk 是一…...
Windows 启动 SSH 服务
Windows 启动 SSH 服务 一、OpenSSH Server 安装 以 Win10 系统为例 打开设置 -> 系统 -> 可选功能 在 添加的功能 查看是否安装了 OpenSSH 服务 或者 OpenSSH Server 如果没有安装,找到 系统->添加可选功能 -> 查看功能->搜索 OpenSSH 服务 ->…...
rust笔记1-学习资料推荐
学习Rust的Trait、生命周期和模式确实需要一些时间,尤其是当这些概念在其他语言中不常见时。以下是一些学习资料和建议,帮助你更好地理解这些概念: 1. 官方文档与书籍 《The Rust Programming Language》(俗称“The Book”&…...
MySQL 的存储引擎有哪些?它们之间有什么区别? MySQL InnoDB 引擎中的聚簇索引和非聚簇索引有什么区别? MySQL 的索引类型有哪些?
MySQL 的存储引擎有哪些?它们之间有什么区别? 先来回顾以下我们业务场景下一般的数据库访问的过程应用——>server层 ——>存储引擎层——>磁盘 官网描述: InnoDB: MySQL 8.4 中的默认存储引擎。 InnoDB 是事务安全(符…...
【Linux探索学习】第二十六弹——进程通信:深入理解Linux中的进程通信
Linux探索学习: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 在Linux操作系统中,进程通信(IPC)是操作系统的一项核心功能,用于在不同进程之间交换数据或…...
netcore https配置
一、生成证书 1. 安装 OpenSSL 如果尚未安装 OpenSSL,可以通过以下命令安装:Ubuntu/Debian:sudo apt update sudo apt install openssl CentOS/RHEL:sudo yum install openssl 2. 生成私钥 使用以下命令生成私钥文件(private.key)…...
遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)
我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…...
rtcwake - Linux下定时唤醒计算机
rtcwake 是一个用于通过实时时钟(RTC)唤醒计算机的工具。它常用于在 Linux 系统中设置计算机在指定时间自动唤醒或关闭。以下是对命令 rtcwake -m off -s ${sleep_time} 的详细解析: 命令解析 bash复制 rtcwake -m off -s ${sleep_time} 1…...
使用vscode调试transformers源码
简要介绍如何使用vscode调试transformers源码 以源码的方式安装transformers(官方手册为Editable install) 优先参考官方手册 git clone https://github.com/huggingface/transformers.git cd transformers pip install -e .以下展示transformers/exa…...
