将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 ...
随机推荐
- 网站https 问题记录
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 开发过程中 常见的 https 问题 - 避坑 做前端多年,发现有些问题需要重复解决很多次,浪费了不少时间,https 导致的问题就属于其 ...
- 前端优化 之 preload
为了优化我们公司网站的性能,我最近引入了浏览器预加载技术(Preload). 这项技术可以显著减少级联情况,提高资源加载的并行度,从而加速网站的加载速度. Preload的原理 Preload的原理是 ...
- C#中字典集合的两种遍历
记录一下 Dictionary<string, string> dictionary = new Dictionary<string,string>(); foreach (s ...
- 【已解决】Android----java.lang.NullPointerException:---java.lang.NullPointerException:
2021-03-06 13:26:12.274 8544-8544/com.example.helloworld E/AndroidRuntime: FATAL EXCEPTION: main Pro ...
- 'scanf': This function or variable may be unsafe
'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable depreca ...
- 面试官:如何搭建Redis集群?
Redis 集群(Redis Cluster)是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服 ...
- #树状数组,欧拉函数#CF594D REQ
题目 给定 \(n\) 个数,求 \(\varphi(\prod_{i=l}^r{a_i})\) 分析 考虑单个欧拉函数的求法,只需要求出这个数的质因数计算即可. 那么考虑离线,枚举右端点,记录每个质 ...
- #线段树合并#JZOJ 5365 通信
分析 取出一段区间后答案就是虚树边的个数的两倍, 考虑计算\(x\)与父亲的边对答案的贡献, 那么不能够贡献的就是\(x\)的子树下标连续的一段或者是非\(x\)的子树连续的一段, 考虑将\(x\)的 ...
- Wasm软件生态系统安全分析
演讲嘉宾 | 王浩宇 回顾整理 | 廖 涛 排版校对 | 李萍萍 嘉宾简介 王浩宇,华中科技大学教授,博士生导师,华中科技大学OpenHarmony技术俱乐部主任.研究关注于新兴软件系统中的安全. ...
- SQLite主键自增代码
引用:https://blog.csdn.net/maowendi/article/details/81115401 insert into TubeRunInfo (UserName) values ...