将Go开发的代码部署到k8s集群
一、在服务器上编译go程序
1.1 编译go语言程序
# 安装go
yum install go -y
mkdir /root/test && cd /root/test
# 设置代理
go env -w GOPROXY=https://goproxy.cn,direct # 创建源码文件

[root@master test]# cat main.go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func statusOKHander(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")
}
main.go代码
# Go mod初始化项目
[root@master test]# go mod init test
go: creating new go.mod: module test
go: to add module requirements and sums:
go mod tidy
[root@master test]# go mod tidy
...
go: downloading gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
go: downloading golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 # 构建源码
[root@master test]# CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o k8s-demo main.go
[root@master test]# ll
总用量 10784
-rw-r--r-- 1 root root 1288 8月 30 15:17 go.mod
-rw-r--r-- 1 root root 7701 8月 30 15:17 go.sum
-rwxr-xr-x 1 root root 11024637 8月 30 15:27 k8s-demo
-rw-r--r-- 1 root root 464 8月 30 15:27 main.go
1.2 编写dockerfile文件构建镜像
[root@master test]# cat dockerfile
FROM alpine
ADD k8s-demo /data/app/
WORKDIR /data/app/
CMD ["/bin/sh","-c","./k8s-demo"] [root@master test]# docker build -t harbor96.9you.com:6443/tools/k8sdemo:v1 .
[root@master test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
harbor96.9you.com:6443/tools/k8sdemo v1 4084cba544d7 23 seconds ago 16.6MB # 将镜像上传到harbor,并导入到k8s工作节点
[root@master test]# docker save -o k8sdemo.tar.gz harbor96.9you.com:6443/tools/k8sdemo:v1
# 导入镜像
[root@node1 ~]# ctr -n=k8s.io images import k8sdemo.tar.gz
1.3 创建deployment的yaml文件

[root@master test]# cat k8s-demo.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: k8s-demo
namespace: default
labels:
app: k8s-demo
spec:
selector:
matchLabels:
app: k8s-demo
replicas: 2
template:
metadata:
labels:
app: k8s-demo
spec:
containers:
- name: k8s-demo
image: harbor96.9you.com:6443/tools/k8sdemo:v1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
protocol: TCP
resources:
limits:
cpu: 100m
memory: 200Mi
requests:
cpu: 50m
memory: 100Mi
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 10
timeoutSeconds: 3
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 10
timeoutSeconds: 2
---
apiVersion: v1
kind: Service
metadata:
name: k8s-demo-svc
namespace: default
labels:
app: k8s-demo
spec:
selector:
app: k8s-demo
ports:
- name: api
port: 8080
protocol: TCP
targetPort: 8080
k8s-demo-deploy-svc.yaml
[root@master test]# kubectl apply -f k8s-demo.yaml
deployment.apps/k8s-demo created
service/k8s-demo-svc created
[root@master test]# kubectl get pods -o wide
\NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
k8s-demo-57b577c5c9-6grz5 1/1 Running 0 2m9s 10.244.104.20 node2 <none> <none>
k8s-demo-57b577c5c9-mc5hb 1/1 Running 0 2m9s 10.244.166.158 node1 <none> <none> [root@master test]# kubectl get svc -n default
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
k8s-demo-svc ClusterIP 10.105.15.228 <none> 8080/TCP 93s # 将svc的TYPE类型从ClusterIP改为nodePort
[root@master test]# kubectl edit svc k8s-demo-svc -n default
type: NodePort # 修改这行
service/k8s-demo-svc edited

[root@master test]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
k8s-demo-svc NodePort 10.105.15.228 <none> 8080:30485/TCP 5m19s # 浏览器访问:
http://192.168.10.10:30485
返回:{"status":"success~welcome to study"} http://192.168.10.10:30485/version
返回:{"version":"v1.1版本"}
将Go开发的代码部署到k8s集群的更多相关文章
- China Azure中部署Kubernetes(K8S)集群
目前China Azure还不支持容器服务(ACS),使用名称"az acs create --orchestrator-type Kubernetes -g zymtest -n kube ...
- Centos7 安装部署Kubernetes(k8s)集群
目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.安装部署Kubernetes集群 4. ...
- 基于 Sealos 的镜像构建能力,快速部署自定义 k8s 集群
Sealos 是一个快速构建高可用 k8s 集群的命令行工具,该工具部署时会在第一个 k8s master 节点部署 registry 服务(sealos.hub),该域名通过 hosts 解析到第一 ...
- 用kubeadm+dashboard部署一个k8s集群
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: 1. 安装要求 在开始之前,部署Kubernetes集群 ...
- 5.基于二进制部署kubernetes(k8s)集群
1 kubernetes组件 1.1 Kubernetes 集群图 官网集群架构图 1.2 组件及功能 1.2.1 控制组件(Control Plane Components) 控制组件对集群做出全局 ...
- Centos 7 部署Kubernetes(K8S)集群
资源链接:https://pan.baidu.com/s/1-PT_QQAf7cTu_znX-S-r9Q 密码:33sr 转发:http://blog.51cto.com/lizhenliang/19 ...
- [k8s]jenkins部署在k8s集群
$ cat jenkins-pvc.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: name: jenkins-pvc spec: ...
- 本地开发spark代码上传spark集群服务并运行
打包 :右击.export.Java .jar File 把TestSpark.jar包上传到spark集群服务器的 spark_home下的myApp下: 提交spark任务: cd /usr/lo ...
- Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14
目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...
- kubernetes系列03—kubeadm安装部署K8S集群
本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...
随机推荐
- Dll堆栈问题(Dll的静态变量与全局变量、vs的MT与MD)
问题引入:dll有一个导出函数,函数参数是string&,string在函数内部被=赋值.在exe动态加载此dll,调用此导出函数后,会崩溃. 原因:如果任何STL类的实现中使用了静态变量(我 ...
- Kingbase ES函数参数模式与Oracle的异同
文章概要: 本文对主要就KES和Oracle的PLSQL中关于存储过程参数模式异同进行介绍,列举和验证了存在的差异 (如果想直接看差异的结论可直接跳到末尾). 一,存储过程的三种参数模式 重新回顾一下 ...
- KingbaseES V8R3集群备份恢复案例之--- timingbackup备份
案例说明: KingbaseES V8R3集群自带了timingbackup.sh的脚本,可以通过一个脚本执行逻辑和物理备份,逻辑备份采用sys_dump,物理备份适用sys_basebackup,本 ...
- 【转载】Vue路由 hash与history 的区别
[转载]Vue路由 hash与history 的区别 两种路由模式原因 对于 Vue 这类渐进式前端开发框架, 为了构建 SPA(单页面应用), 需要引入前端路由系统, 这也就是 Vue-Router ...
- Scala 函数至简原则
(1)return 可以省略,Scala 会使用函数体的最后一行代码作为返回值(2)如果函数体只有一行代码,可以省略花括号(3)返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)(4) ...
- 【已解决】严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]
Web开发项目中,启动Tomcat时出现错误 这是因为之前启动了Tomcat服务器,但是没有正常的关闭,造成8080端口号的进程依旧在系统后台运行着,导致Tomcat重启失败. cmd taskkil ...
- ubuntu 联网
使用NAT
- #线段树,倒序#CF356A Knight Tournament
题目 分析 要求覆盖必须是第一个覆盖的, 考虑最后一个覆盖的很简单做线段树区间赋值, 那么倒序区间赋值就可以了 代码 #include <cstdio> #include <ccty ...
- 成长计划知识赋能 | 第九期:渐进式深入理解OpenHarmony系统
成长计划知识赋能直播第九期如约而至,面向OpenHarmony初中级开发者,解析OpenHarmony系统架构和驱动框架,助力开发者快速上手OpenHarmony系统开发. 详情见海报内容,资深软 ...
- OpenHarmony littlefs文件系统存储结构与IO性能优化分析
引言 随着科技的发展和网络技术的进步,计算机存储空间愈加紧张,存储空间对文件系统的功能需求越来越大,大规模的数据增长为文件存储.非结构化数据存储提出了新的挑战. 对于许多物联网设备而言,拥有一个小型且 ...