ReturnTmp's Blog ReturnTmp's Blog
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

ReturnTmp

分享有趣好玩的计算机知识
首页
基础课程
编程语言
框架技术
运维笔记
人工智能
随笔摘录
  • 友链
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • GLIBC_2.28 not found 问题解决
  • Monorepo 多项目单仓库
  • Renovate 第三方依赖更新监控
  • 【IDEA】Maven 构建项目生成文件解析
  • K8s

    • k8s 入门指南
    • K8s 集群 Windows 安装部署指南
    • K8s 部署
    • K8s 入门指南(一):单节点集群环境搭建
    • K8s 入门指南(一):单节点集群环境搭建(ubuntu)
    • K8s 入门指南(二):实战概念讲解
      • 前言
      • Container
      • Pod
      • 参考链接
  • Zotero 使用指南
  • package-lock.json 是否提交问题
  • 『ARM』和『x86』处理器架构解析指南
  • GlassFish 安装配置
  • 手把手教你安装配置『Oracle Database 19c』
  • Oracle Database 19c 彻底卸载
  • 语雀故障回顾
  • OpenStack 云计算平台 Nova 计算服务学习指南
  • Vue devServer 教程
  • Swagger 导出 API 文档
  • MapStruct POJO 映射框架指南
  • IDEA 代码热部署和热加载
  • SpringBoot 启动参数配置
  • Nacos 入门指南
  • seleuim 指南
  • Spring 服务降级熔断
  • Maven BOM 解析
  • .vscode 文件夹
  • Spring Security Token 认证
  • SpringBoot 基于 Actuator 和 Admin 实现应用监控管理
  • SPM/SCM 流量跟踪体系
  • Netty 入门
  • Flyway 数据库版本管理实战指南
  • Swagger 2 和 3 安装区别
  • MP 配置分页
  • MySQL 分库分表
  • Git Commit 提交规范,变更日志、版本发布自动化和 Emoji 提交标准
  • VSCode 插件 i18n Ally 进行国家化配置
  • Vue3 组合式 全局挂载
  • TS 教程
  • 架构解析:同城双活、异地多活、单元化架构
  • Spring 跨域配置
  • SpringCloud 微服务实战
  • Sentinel 流量治理组件教程
  • leetcode 上分
  • JMeter 压测
  • Netty IM 系统
  • IDEA 插件开发
  • SpringBoot 邮件服务 集成配置 详解
  • Maven 依赖包冲突问题解决
  • 社区项目 forest 修改
  • Maven 项目命名规范
  • 新版 PyCharm 设置 Conda 虚拟环境
  • 框架工具
  • K8s
ReturnTmp
2023-12-11
目录

K8s 入门指南(二):实战概念讲解

# 前言

本专栏为 k8s 实战模块讲解专栏

# Container

这里先创建简单的 springboot 项目,然后开放一个供 k8s 访问的接口

示例项目地址:ReturnTmp/springboot-k8s-demo (github.com) (opens new window)

@RestController
@RequestMapping("/k8s")
public class HelloK8sController {

    @GetMapping("/hello")
    public String helloK8s() {
        return "Hello K8s!";
    }
}
1
2
3
4
5
6
7
8
9

然后在服务器拉取项目,然后执行

首先登录 docker,然后输入 docker 的账号密码即可

docker login
1

然后编写如下 Dockerfile

# Dockerfile
FROM golang:1.16-buster AS builder
RUN mkdir /src
ADD . /src
WORKDIR /src

RUN go env -w GO111MODULE=auto
RUN go build -o main .

FROM gcr.io/distroless/base-debian10

WORKDIR /

COPY --from=builder /src/main /main
EXPOSE 3000
ENTRYPOINT ["/main"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

注:如果 gcr.io/distroless/base-debian10 镜像因为网络原因拉取失败,可以使用代理地址gcr.dockerproxy.com/distroless/base-debian10

接下来我们使用如下命令构建镜像,需要注意 main.go 文件需要和 Dockerfile 文件在同一个目录下,执行下方 docker build 命令,第一次需要耐心等待拉取基础镜像。并且需要注意将命令中 returntmp 替换成自己的 DockerHub 注册的账号名称。这样我们后续可以推送镜像到自己注册的 DockerHub 仓库当中。

docker build . -t returntmp/hellok8s:v1
1

之后我们可以使用 docker images 查看镜像是否构建成功

image.png

然后运行容器,运行成功后我们访问 http://127.0.0.1:3000 , 查看是否成功返回字符串 [v1] Hello, Kubernetes!

docker run -p 3000:3000 --name hellok8s -d returntmp/hellok8s:v1
1

查看容器成功运行之后,我们就可以推送镜像到仓库中(注意替换自己的账号名)

docker push returntmp/hellok8s:v1
1

# Pod

在单体服务中,上面的 Container 已经足够,但是在生产环境中,我们需要维护着大规模的集群和各种不同的服务,服务之间往往存在着各种各样的关系

Pod 是我们将要创建的第一个 k8s 资源,也是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元,下面我们将要创建一个简单的 Pod 试试

创建 nginx.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
    - name: nginx-container
      image: nginx
1
2
3
4
5
6
7
8

其中 kind 表示我们要创建的资源是 Pod 类型, metadata.name 表示要创建的 pod 的名字,这个名字需要是唯一的。 spec.containers 表示要运行的容器的名称和镜像名称。镜像默认来源 DockerHub。

我们运行第一条 k8s 命令 kubectl apply -f nginx.yaml 命令来创建 nginx Pod。

接着通过 kubectl get pods 来查看 pod 是否正常启动。

最后通过 kubectl port-forward nginx-pod 4000:80 命令将 nginx 默认的 80 端口映射到本机的 4000 端口,打开浏览器或者 curl 来访问 http://127.0.0.1:4000 , 查看是否成功访问 nginx 默认页面

# 参考链接

  • guangzhengli/k8s-tutorials: k8s tutorials (opens new window)
编辑 (opens new window)
上次更新: 2024/01/02, 01:26:45
K8s 入门指南(一):单节点集群环境搭建(ubuntu)
Zotero 使用指南

← K8s 入门指南(一):单节点集群环境搭建(ubuntu) Zotero 使用指南→

最近更新
01
百度网盘加速
03-24
02
新版 PyCharm 设置 Conda 虚拟环境
03-24
03
腾讯云域名转到阿里云
03-24
更多文章>
Theme by Vdoing | Copyright © 2023-2024 ReturnTmp | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式