将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 ...
随机推荐
- FPT:又是借鉴Transformer,这次多方向融合特征金字塔 | ECCV 2020
论文提出用于特征金字塔的高效特征交互方法FPT,包含3种精心设计的特征增强操作,分别用于借鉴层内特征进行增强.借鉴高层特征进行增强以及借鉴低层特征进行增强,FPT的输出维度与输入一致,能够自由嵌入到各 ...
- hadoop集群启动脚本文件myhadoop.sh
#!/bin/bash if [ $# -lt 1 ] then echo "No Args Input..." exit ; fi case $1 in "start& ...
- 如何保证MySQL和Redis数据一致性?
背景 在高并发的业务场景中,因为MySQL数据库是操作磁盘效率比较低,因此大多数情况下数据库都是高并发系统的瓶颈.因为Redis操作数据是在内存中进行,所以就需要使用Redis做一个缓存.让请求先访问 ...
- #轮廓线dp,模型转换#洛谷 3226 [HNOI2012]集合选数
题目 问有多少个集合 \(S\) 是 \([1,n]\) 的子集, 并且 \(\forall a,b\in S,a|b\),满足 \(\frac{b}{a}\neq \{2,3\}\) 分析 可以发现 ...
- #树形dp,二分#UVA1407 Caves 洛谷 3698 [CQOI2017]小Q的棋盘
题目 给定一棵树,现在需要找到一条由节点1出发长度为\(x\)的路径, 问最多经过的节点数,重复经过只计算一次(不一定是简单路径) UVA的那道题多组数据多组询问,边权还不一定是1,\(n\leq 5 ...
- 2024-04-06:用go语言,给你两个非负整数数组 rowSum 和 colSum, 其中 rowSum[i] 是二维矩阵中第 i 行元素的和, colSum[j] 是第 j 列元素的和,换言之你
2024-04-06:用go语言,给你两个非负整数数组 rowSum 和 colSum, 其中 rowSum[i] 是二维矩阵中第 i 行元素的和, colSum[j] 是第 j 列元素的和,换言之你 ...
- OpenHarmony创新赛|赋能直播第三期
开放原子开源大赛OpenHarmony创新赛赋能直播间持续邀请众多技术专家一起分享应用开发技术知识,本期推出OpenHarmony应用开发之音视频播放器和三方库的使用和方法,助力开发者掌握多媒体应用 ...
- 【直播回顾】如何成为一名优秀的OpenHamrony贡献者?
5月18日晚上19点,战"码"先锋第一期直播<如何成为一名优秀的OpenHamrony 贡献者?>,在OpenHarmony社群内成功举行. 本期课程,由润和资深软件开 ...
- C++ 数学函数、头文件及布尔类型详解
C++ 数学 C++ 有许多函数可以让您在数字上执行数学任务. 最大值和最小值 max(x, y) 函数可用于找到 x 和 y 的最大值: 示例 cout << max(5, 10); 而 ...
- centos部署Django一:环境搭建
前言: 参考文档: https://www.cnblogs.com/djangocn/p/9538551.html https://www.icode9.com/content-3-546765.ht ...