【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 应用

❗ 注意:

  1. 为了方便入门,本教程仅部署一个简单使用 gin 框架搭建的 Web 系统,没有用到 MySQL 和 Redis 等其他中间件依赖
  2. 请确保您的主机上已经安装好了 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 的哪个端口上

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

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

相关文章

【Python】Python入门——基础语法及顺序语句

Python入门——基础语法及顺序语句 官方文档地址&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.htmlPython 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构&#xff0c;还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语…

在使用 uni.getLocation 步骤和一些坑

1.使用前需要去微信小程序申请开通wx.getLocation 获取当前位置的api (不申请上线之后会使用不了)&#xff0c;申报资料的话我让ai帮我写的&#xff0c;说一下使用场景弄几张图片就可以了 地址 &#xff1a; 小程序 2.第二个需要配置域名 具体申请腾讯地图的方法参考 &…

Docker高级篇

1.Mysql主从复制Docker版本 mysql主从复制原理 binlog 1.新建主服务器容器实例 docker run -d -p 3307:3306 --privilegedtrue \ -v /opt/mysql8.4.3/log:/var/log/mysql \ -v /opt/mysql8.4.3/conf:/etc/mysql/conf.d \ -v /opt/mysql8.4.3/data:/var/lib/mysql \ -e MYSQL…

Java中对象序列化机制的优化研究

Java中对象序列化机制的优化研究 对象序列化&#xff08;Serialization&#xff09;是Java编程中一种非常重要的机制&#xff0c;它允许将对象的状态转换为字节流&#xff0c;从而方便存储或网络传输。然而&#xff0c;Java的默认序列化机制虽然功能强大&#xff0c;但在性能、…

wordpress资讯类网站整站打包

wordpress程序&#xff0c;内置了价值499元的模板.但是有了模板没有全自动采集相信大多数人都搞不懂&#xff0c;目录那么多&#xff0c;全靠原创几乎是不可能的事情&#xff0c;除非你是大公司&#xff0c;每人控制一个板块&#xff0c; 这套源码里面最有价值的应该是这个采集…

【深度解析】图解Deepseek-V3模型架构-混合专家模型(MoE)

一、引言 最近非常火爆的DeepSeek-V3模型&#xff0c;是一个包含6710亿总参数的强大混合专家模型&#xff08;MoE&#xff09;&#xff0c;其中每个token激活370亿参数。该模型在DeepSeek-V2验证有效的核心架构基础上&#xff0c;采用多头潜在注意力&#xff08;MLA&#xff0…

hive:分区>>静态分区,动态分区,混合分区

分区表 使用场景&#xff1a;数据量庞大且经常用来做查询的表 特点&#xff1a;将数据分别存储到不同的目录里 优点&#xff1a;避免全盘扫描&#xff0c;提高查询效率 分区的类型 它们的默认值分别是: false, strict, 要求至少有一个静态分区列&#xff0c;而 nonstr…

React进阶之React核心源码解析(一)

React核心源码解析 react 特点CPU卡顿IO 卡顿 新老 react 架构对比v15v16.8Scheduler 调度器Reconciler 协调器 React fiber原理更新dommount 构建过程 render阶段 — scheduler reconcilerreact源码解析react-domreact-dom/src/client/ReactDOMRoot.js react-reconcilerreact-…

ubuntu20.04连接airpods pro2

youtub视频解决方法&#xff1a;Setup your AirPods Pro with Linux (Ubuntu w/Mic fix) 重要步骤1&#xff0c; sudo apt-get update sudo apt-get install pulseaudio sudo apt-get upgrade pluseaudio重要步骤2&#xff0c; sudo vim /etc/bluetooth/main.confsudo /ect/…

sqli_labs_master Less-8 时间盲注,boolen盲注 获取数据库中的表、列

获取当前数据库名 import requestsdef inject_database(url):namemax_length20 # 假设数据库名称最大长度为20# ASCII范围&#xff1a;数字、字母、下划线&#xff08;_&#xff09;low{a: 97, z: 122, A: 65, Z: 90, 0: 48, 9: 57, _: 95}high{97: a, 122: z, 65: A, 90: Z,…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_ssl_init 函数

#if (NGX_OPENSSL)ngx_ssl_init(log); #endif objs/ngx_auto_config.h 中 #ifndef NGX_OPENSSL #define NGX_OPENSSL 1 #endif 所以这个条件编译成立 NGX_OPENSSL 是一个宏定义&#xff0c;用于控制与 OpenSSL 相关的功能是否被启用 若用户通过./configure参数&#xff08;如-…

常用架构图:业务架构、产品架构、系统架构、数据架构、技术架构、应用架构、功能架构及信息架构

文章目录 引言常见的架构图I 业务架构图-案例模块功能说明1. 用户界面层 (UI)2. 应用服务层3. 数据管理层4. 基础设施层业务流程图示例技术实现II 功能架构图 -案例功能模块说明1. 船舶监控模块2. 报警管理模块3. 应急响应模块4. 通信管理模块5. 数据分析模块数据管理层基础设施…

Redis 09章——哨兵(sentinel)

一、是什么 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据$\textcolor{red}{投票数}$自动将某一个从库转换为新主库&#xff0c;继续对外服务作用&#xff1a;俗称无人值守运维官网理论&#xff1a;High availability with Redis Sentinel | Docs 二、能干…

WEB入门

1.了解什么是WEB 2.了解什么是WEB前端 3.学习和掌握开发环境的搭建 4.网页开发基础 1.什么是WEB 1946年&#xff0c;有一个发明了人类史上第一台完整体系的计算机 时间进展到1989年&#xff0c;实验室有一个研发人员 TimBernersLee&#xff08;提姆博纳斯李&#xff09;开…

【若依免登录】登录状态已过期,您可以继续留在该页面,或者重新登录

【问题】 【问题背景】 在实现若依的免登录出现的问题。前面已经做的操作 前端 第一步&#xff1a;views目录下面存在需要免登录的页面 第二步&#xff1a;在ruoyi-ui\src\router 的 index.js 的 constantRoutes &#xff08;公共路由方&#xff09;中 配置需要免登录的页面位…

JUC并发-4.wait和notify以及Atomic原理

大纲 1.wait()与notify()实现一个简易的内存队列 2.wait()与notify()的底层原理 3.分布式存储系统NameNode机制介绍 4.分布式存储系统的edits log机制介绍 5.分布式存储系统的NameNode实现 6.分布式存储系统的创建目录功能的实现 7.edits log的全局txid机制和双缓冲机制…

Jasper AI技术浅析(二):语言模型

Jasper AI 的核心语言模型是基于 OpenAI 的 GPT-4(Generative Pre-trained Transformer 4)构建的。GPT-4 是一种生成式预训练语言模型,利用深度学习技术,特别是 Transformer 架构,来理解和生成自然语言。 1. GPT-4 的基本原理 1.1 Transformer 架构 GPT-4 基于 Transfo…

(arxiv2411) CARE Transformer

作者提出了两个问题&#xff0c;问题 1&#xff1a;堆叠是充分利用局部归纳偏差和长距离信息优势的最佳方法吗&#xff1f; 问题 2&#xff1a;是否有可能同时提高线性视觉 Transformer 的效率和准确性&#xff1f; 为了解决这两个问题&#xff0c;作者提出了一种 deCoupled du…

RISC-V平台编译 state-thread x264 ffmpeg zlog

1.state-threads 源码下来之后 直接 make linux-debug 目录下生成了对应的.a 和 .h文件 gcc test.c -o test -l st -L . #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/socket.h&g…

DeepSeek笔记(二):DeepSeek局域网访问

如果有多台电脑&#xff0c;可以通过远程访问&#xff0c;实现在局域网环境下多台电脑共享使用DeepSeek模型。在本笔记中&#xff0c;首先介绍设置局域网多台电脑访问DeepSeek-R1模型。 一、启动Ollama局域网访问 1.配置环境变量 此处本人的操作系统是Windows11&#xff0c;…