Minikube部署Golang应用

文章目录

    • 1. 制作docker 镜像
    • 2. 部署
    • 3. 验证

1. 制作docker 镜像

示例程序

/*
	运行下行命令编译
	GOOS=linux GOARCH=386 go build -ldflags '-s -w' -o webserver
*/

package main

import (
	"fmt"
	"log"
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintln(w, "Hello World!")
	})

	log.Fatalln(http.ListenAndServe(":80", nil))
}

Dockerfile

# docker build -t leo/webserver .
# 为了减小体积,使用scratch,实际使用golang官方镜像
FROM scratch

COPY ./webserver /webserver

CMD ["/webserver"]

编译打包镜像, 上传到minikube虚拟机镜像库中

# 1.编译go程序
GOOS=linux GOARCH=386 go build -ldflags '-s -w' -o webserver
# 2.本机制作go镜像
docker build -t leo/webserver .
docker image save leo/webserver > webserver.tar
# 3.上传到minikube虚拟机中docker镜像库
minikube image load webserver.tar

2. 部署

该字段设置imagePullPolicy: Never使用本地的镜像,否则会从镜像仓库拉取最新导致失败Error: ErrImagePull

pod.yaml

kubectl apply -f pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: webserver
  labels:
    name: webserver
spec:
  containers:
  - name: webserver
    image: leo/webserver
    imagePullPolicy: Never
    resources:
      limits:
        memory: "128Mi"
        cpu: "500m"
    ports:
      - containerPort: 80
        hostPort: 8080

3. 验证

查看pods状态

kubectl get pods webserver
kubectl describe pods webserver

Minikube部署Golang应用_第1张图片测试pods访问

根据上图结果,pod所在节点机器IP为192.168.49.2
pod分配的IP为172.17.0.7
ssh到192.168.49.2上验证

# --node参数使用IP地址报错,使用node名字
minikube ssh --node minikube

curl http://172.17.0.7

Minikube部署Golang应用_第2张图片Todo创建services, ingress等暴露服务

你可能感兴趣的:(K8S,Golang,golang,docker,开发语言)