当前位置: 首页 > article >正文

【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 main

import (
	"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: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
        - name: demo
          image: ricejson/demo:v0.0.1
          ports:
            - containerPort: 8080

步骤五:编写 k8s Service 文件:

apiVersion: v1
kind: Service
metadata:
  name: demo
spec:
  selector:
    app: demo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: 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.kler.cn/a/549568.html

相关文章:

  • 在Mac arm架构终端中运行 corepack enable yarn 命令,安装yarn
  • 力扣做题记录 (二叉树)
  • 使用redis实现与flink窗口同样的消息聚合处理效果
  • GitLab CI/CD 的配置详解:从零开始使用 .gitlab-ci.yml 文件
  • BEV:车轮接地点车辆修正3D框位置精度
  • OpenCV机器学习(2)提升算法类cv::ml::Boost
  • 第25周Java主流框架实战-springboot入门 4.配置详解
  • 第 16 天:游戏 UI(UMG)开发,打造主菜单 血条!
  • ​矩阵元素的“鞍点”​
  • newgrp docker需要每次刷新问题
  • 使用bitnamiredis-sentinel部署Redis 哨兵模式
  • Android 13 通过修改 AOSP 禁用扬声器
  • 练习题 - DRF 3.x Parsers 解析器使用示例和配置方法
  • openGauss 3.0 数据库在线实训课程16:学习逻辑结构:表管理4
  • R 语言科研绘图第 24 期 --- 直方图-高亮
  • Vue CLI 配置与插件
  • 机器学习:集成学习和随机森林
  • 解锁二进制数组:JS、TS、ArkTS 解析
  • MySQL DELETE 语句
  • WPS的AI助手进化跟踪(灵犀+插件)