Go开发运维:Go服务发布到K8S集群

目录

一、实验

1.Go服务发布到k8s集群

二、问题

1.如何从Harbor拉取镜像

一、实验

1.Go服务发布到k8s集群

(1)linux机器安装go(基于CentOS 7系统)

yum install go -y

(2)查看版本

go version

(3)创建源码文件

[root@master1 ~]# mkdir test
[root@master1 ~]# cd test/
[root@master1 test]# cat main.go 
package mainimport ("net/http""github.com/gin-gonic/gin"
)func statusOKHandler(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "success~welcome to study"})
}func versionHandler(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"version": "v1.1版本"})
}func main() {router := gin.New()router.Use(gin.Recovery())router.GET("/", statusOKHandler)router.GET("/version", versionHandler)router.Run(":8080")
}

 注意这里有小括号:

这里有2个双引号

(4)Go mod初始化项目

go mod init test

(5)设置代理

go env -w GOPROXY=https://goproxy.cn,direct

go mod tidy

(6)构建源码

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o k8s-demo main.go

K8s-demo 为二进制文件:

(7)编写dockerfile文件

实现功能:容器里封装二进制代码

[root@master1 test]# cat Dockerfile 
FROM alpine
ADD k8s-demo /data/app/
WORKDIR /data/app/
CMD ["/bin/sh","-c","./k8s-demo"]

(8)构建镜像

docker build -t david/k8sdemo:v1 .

(9)打包镜像,传到k8s工作节点

docker save -o k8sdemo.tar.gz david/k8sdemo:v1

scp k8sdemo.tar.gz node1:/root/

(10)在node1节点解压镜像

docker load -i k8sdemo.tar.gz

(11)创建deployment的yaml文件

[root@master1 test]# cat k8s.yaml apiVersion: apps/v1kind: Deploymentmetadata:name: k8s-demonamespace: defaultlabels:app: k8s-demospec:selector:matchLabels:app: k8s-demoreplicas: 4template:metadata:labels:app: k8s-demospec:containers:- image: david/k8sdemo:v1imagePullPolicy: IfNotPresentname: k8s-demoports:- containerPort: 8080protocol: TCPresources:limits:cpu: 100mmemory: 100Mirequests:cpu: 50mmemory: 50MilivenessProbe:tcpSocket:port: 8080initialDelaySeconds: 10timeoutSeconds: 3readinessProbe:httpGet:path: /port: 8080initialDelaySeconds: 10timeoutSeconds: 2---apiVersion: v1kind: Servicemetadata:name: k8s-demo-svcnamespace: defaultlabels:app: k8s-demospec:ports:- name: apiport: 8080protocol: TCPtargetPort: 8080selector:app: k8s-demo

(12)更新yaml文件

kubectl apply -f k8s.yaml

(13)查看pod和svc

kubectl get pods

kubectl get svc

(14)修改svc的type类型变成nodePort

kubectl edit svc k8s-demo-svc

修改前:

修改后:

(15)查看svc

kubectl get svc

(16)浏览器访问测试

二、问题

1.如何从Harbor拉取镜像

(1)每个节点修改配置文件

vim /etc/docker/daemon.json
#增加如下代码:"log-driver": "json-file",
"log-opts": {"max-size": "100m"},  "insecure-registries": ["https://192.168.204.110"]

(2)Harbor新建项目

(3)查看镜像

docker images

(4)新打标签

docker tag david/k8sdemo:v1 192.168.204.110/david-project/k8sdemo:v1

(5)如遇到Harbor登录不了

(6)启动

cd /data/install/harbor
docker-compose start

(7)成功

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

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

相关文章

vue3 setup语法糖写法基本教程

前言 官网地址:Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)下面只讲Vue3与Vue2有差异的地方,一些相同的地方我会忽略或者一笔带过与Vue3一同出来的还有Vite,但是现在不使用它,等以后会有单独的教程使用。目前仍旧使用v…

GZ015 机器人系统集成应用技术样题3-学生赛

2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书(学生赛) 样题3 选手须知: 本任务书共 26页,如出现任务书缺页、字迹不清等问题,请及时向裁判示意,并进行任务书的更换。参赛队…

自定义日志打印功能--C++

一、介绍 日志是计算机程序中用于记录运行时事件和状态的重要工具。通过记录关键信息和错误情况,日志可以帮助程序开发人员和维护人员追踪程序的执行过程,排查问题和改进性能。 在软件开发中,日志通常记录如下类型的信息: 事件信…

Go delve调试工具的简单应用

Delve是个啥 Delve is a debugger for the Go programming language. The goal of the project is to provide a simple, full featured debugging tool for Go. Delve should be easy to invoke and easy to use. Chances are if you’re using a debugger, things aren’t go…

openmediavault debian linux安装配置企业私有网盘(三 )——raid5与btrfs文件系统无损原数据扩容

一、适用环境 1、企业自有物理专业服务器,一些敏感数据不外流时,使用openmediavault自建NAS系统; 2、在虚拟化环境中自建NAS系统,用于内网办公,或出差外网办公时,企业内的文件共享; 3、虚拟化环…

数据结构-迷宫问题

文章目录 1、题目描述2、题目分析3、代码实现 1、题目描述 题目链接:迷宫问题 、 注意不能斜着走! 2、题目分析 (1)0为可以走,1不能走且只有唯一一条通路 (2)我们可以通过判断上下左右来确定…

AI智能化办公:ChatGPT使用方法与技巧

文章目录 ChatGPT简介✨ChatGPT的使用方法✨登录与访问发送请求调整参数 ChatGPT技巧分享✨清晰的提问实验不同的温度值多轮对话 图书推荐✨AI智能化办公内容简介获取方式 AI短视频内容简介获取方式 随着人工智能技术的不断发展,AI助手在办公场景中扮演着越来越重要…

基于Python自动化测试框架之接口测试

上一篇阐述了关于web UI相关的内容,这篇谈谈关于接口测试及自动化测试框架。 接口测试是测试系统组件间数据交互的一种方式,通过不同情况下的输入参数和与之对应的输出结果来判断接口是否符合或满足相应的功能性、安全性要求。简单来说,接口…

UE5 - ArchvizExplorer与Map Border Collection结合 - 实现电子围栏效果

插件地址: https://www.unrealengine.com/marketplace/zh-CN/product/archviz-explorer https://www.unrealengine.com/marketplace/zh-CN/product/map-border-collection ArchvizExplorer扩展: https://download.csdn.net/download/qq_17523181/8843305…

Power BI - 5分钟学习增加索引列

每天5分钟,今天介绍Power BI增加索引列。 什么是增加索引列? 增加索引列就是向表中添加一个具有显式位置值的新列,一般从0或者从1开始。 举例: 首先,导入一张【Sales】样例表(Excel数据源导入请参考每天5分钟第一天)…

消除非受检警告

在Java中,有一些情况下编译器会生成非受检警告(Unchecked Warnings)。这些警告通常与泛型、类型转换或原始类型相关。消除这些警告可以提高代码的可读性和安全性。以下是一些常见的非受检警告以及如何消除它们的例子: 1. 泛型类型…

【K8S 系列】认识k8s、k8s架构

一、什么是k8s? Kubernetes 简称 k8s,是支持云原生部署的一个平台,k8s 本质上就是用来简化微服务的开发和部署的,用于自动化部署、扩展和管理容器化应用的开源容器编排技术。对于传统的docker其实也提供了容器编排的技术docker-compose&…

机器学习---Boosting

1. Boosting算法 Boosting思想源于三个臭皮匠,胜过诸葛亮。找到许多粗略的经验法则比找到一个单一的、高度预 测的规则要容易得多,也更有效。 预测明天是晴是雨?传统观念:依赖于专家系统(A perfect Expert) 以“人无…

学习git后,真正在项目中如何使用?

文章目录 前言下载和安装Git克隆远程仓库PyCharm链接本地Git创建分支修改项目工程并提交到本地仓库推送到远程仓库小结 前言 网上学习git的教程,甚至还有很多可视化很好的git教程,入门git也不是什么难事。但我发现,当我真的要从网上克隆一个…

2044回文字符串(C语言)

目录 一:题目 二:思路分析 1.什么是回文? 2.判断回文: 三:代码 一:题目 二:思路分析 1.什么是回文? 最简单的理解方式就是一个字符串正着写和倒着写一样 2.判断回文&#xff1…

leetcode砍竹子1

现需要将一根长为正整数 bamboo_len 的竹子砍为若干段,每段长度均为正整数。请返回每段竹子长度的最大乘积是多少。 1.根据公式看出取等是在所有n相等的情况,可以得出只有均分 乘积最大 2.转为求下面的最大值 3.求导,得出驻点为e2.7左右 …

百度地图中显示红点

initMap(longitude, latitude) {var map new BMapGL.Map("container");// 创建地图实例if (longitude null || latitude null) {var point new BMapGL.Point(111.1480354849708, 37.5262978563336);var marker new BMapGL.Marker(point);map.addOverlay(marker)…

ubuntu如何远程ssh登录Windows环境并执行测试命令

ubuntu如何远程ssh登录Windows环境并执行测试命令 1 paramiko模块简介1.1 安装paramiko1.2 paramiko基本用法1.2.1 创建SSHClient实例1.2.2 设置主机密钥策略1.2.3 连接SSH服务器1.2.4 执行命令1.2.5 关闭SSH连接1.2.6 异常处理 2 windows的配置2.1 启动OpenSSH服务2.2 配置防火…

【Spark精讲】Spark与MapReduce对比

目录 对比总结 MapReduce流程 ​编辑 MapTask流程 ReduceTask流程 MapReduce原理 阶段划分 Map shuffle Partition Collector Sort Spill Merge Reduce shuffle Copy Merge Sort 对比总结 Map端读取文件:都是需要通过split概念来进行逻辑切片&…