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

目录

一、实验

1.Go服务发布到k8s集群

二、问题

1.如何从Harbor拉取镜像

一、实验

1.Go服务发布到k8s集群

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

bash 复制代码
yum install go -y

(2)查看版本

bash 复制代码
go version

(3)创建源码文件

bash 复制代码
[root@master1 ~]# mkdir test
[root@master1 ~]# cd test/
[root@master1 test]# cat main.go 
package main

import (
	"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初始化项目

bash 复制代码
go mod init test

(5)设置代理

bash 复制代码
go env -w GOPROXY=https://goproxy.cn,direct
bash 复制代码
go mod tidy

(6)构建源码

bash 复制代码
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o k8s-demo main.go

K8s-demo 为二进制文件:

(7)编写dockerfile文件

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

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

(8)构建镜像

bash 复制代码
docker build -t david/k8sdemo:v1 .

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

bash 复制代码
docker save -o k8sdemo.tar.gz david/k8sdemo:v1
bash 复制代码
scp k8sdemo.tar.gz node1:/root/

(10)在node1节点解压镜像

bash 复制代码
docker load -i k8sdemo.tar.gz

(11)创建deployment的yaml文件

bash 复制代码
[root@master1 test]# cat k8s.yaml 
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: k8s-demo
      namespace: default
      labels:
        app: k8s-demo
    spec:
      selector:
        matchLabels:
          app: k8s-demo
      replicas: 4
      template:
        metadata:
          labels:
            app: k8s-demo
        spec:
          containers:
          - image: david/k8sdemo:v1
            imagePullPolicy: IfNotPresent
            name: k8s-demo
            ports:
            - containerPort: 8080
              protocol: TCP
            resources:
              limits:
                cpu: 100m
                memory: 100Mi
              requests:
                cpu: 50m
                memory: 50Mi
            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:
      ports:
        - name: api
          port: 8080
          protocol: TCP
          targetPort: 8080
      selector:
        app: k8s-demo

(12)更新yaml文件

bash 复制代码
kubectl apply -f k8s.yaml

(13)查看pod和svc

bash 复制代码
kubectl get pods
bash 复制代码
kubectl get svc

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

bash 复制代码
kubectl edit svc k8s-demo-svc

修改前:

修改后:

(15)查看svc

bash 复制代码
kubectl get svc

(16)浏览器访问测试

二、问题

1.如何从Harbor拉取镜像

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

bash 复制代码
vim /etc/docker/daemon.json
bash 复制代码
#增加如下代码:

 "log-driver": "json-file",
"log-opts": {
  "max-size": "100m"
 },  
  "insecure-registries": ["https://192.168.204.110"]

(2)Harbor新建项目

(3)查看镜像

bash 复制代码
docker images

(4)新打标签

bash 复制代码
docker tag david/k8sdemo:v1 192.168.204.110/david-project/k8sdemo:v1

(5)如遇到Harbor登录不了

(6)启动

bash 复制代码
cd /data/install/harbor
docker-compose start

(7)成功

相关推荐
model200519 小时前
Web 服务和 SFTP 用户 操作目录
linux·运维·服务器
刃神太酷啦19 小时前
Linux 进程核心原理精讲:从体系结构到实战操作(含 fork / 状态 / 优先级)----《Hello Linux!》(6)
java·linux·运维·c语言·c++·算法·leetcode
Lethehong19 小时前
从零到精通:Docker容器化完整指南与实战练习
运维·docker·容器
OurBMC社区20 小时前
玩转OurBMC第二十三期:OurBMC之PCIe接口应用(下)
linux·运维·网络
Guheyunyi20 小时前
用电安全管理系统的三大系统架构
大数据·运维·人工智能·安全·架构·系统架构
PyAIGCMaster20 小时前
小程序使用阿里云oss的记录。
阿里云·云计算
weixin_3077791320 小时前
Jenkins Pipeline: Multibranch 插件详解:现代CI/CD的多分支管理利器
运维·开发语言·自动化·jenkins·etl
刀刀是个萌妹子20 小时前
使用CloneZilla还原操作系统
linux·运维·服务器
代码不行的搬运工20 小时前
交换机和网卡的 PFC 机制工作原理与实例解析
运维·服务器·网络·算力网络
二狗哈20 小时前
Cesium快速入门22:fabric自定义着色器
运维·开发语言·前端·webgl·fabric·cesium·着色器