在Kubernetes上运行Golang
我要试着使用Kubernetes来部署服务器,之前还没有尝试过。我要试着在Kubernetes上部署Nginx。
首先,我们将确认当前的节点情况。这是我们之前进行过的内容。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
gke-aura-blue-5bef3904-gf47 Ready <none> 2h v1.11.8-gke.6
我尝试了各种样本,但总觉得缺了点什么,无法成功启动,遇到了很多困难。
结果变得非常简单。
我们将按顺序逐步执行。
首先创建一个随意的工作文件夹。
在其中,我们会创建以下内容。
主要.go
package main
import (
"time"
"net/http"
)
const layout = "2006-01-02 15:04:05"
func main() {
http.HandleFunc("/time", func(writer http.ResponseWriter, request *http.Request) {
l := request.URL.Query().Get("tz")
location, err := time.LoadLocation(l)
if err != nil {
panic(err)
}
writer.Write([]byte(time.Now().In(location).Format(layout)))
})
http.ListenAndServe(":8080", nil)
}
Dockerfile可以被原汁原味地翻译为:”Docker文件”。
FROM scratch
COPY clock /clock
ENV GOROOT /usr/local/go
ADD https://github.com/golang/go/raw/master/lib/time/zoneinfo.zip /usr/local/go/lib/time/zoneinfo.zip
ENTRYPOINT ["/clock"]
请将其多平台编译成名为“clock”的二进制文件。
GOOS=linux GOARCH=amd64 go build -o clock main.go
使用Docker构建
docker build -t gcr.io/<プロジェクトID>/hello ./
在这阶段,我们将确认是否可以从本地显示。
docker run -p 8080:8080 clock
我会保持上述状态,并从本地进行确认。
curl localhost:8080/time
将Docker构建的结果上传到GCP。
gcloud docker -- push gcr.io/<プロジェクト名>/hello
创建deployment.yaml文件
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hello
labels:
app: hello
spec:
replicas: 1
template:
metadata:
labels:
app: hello
spec:
containers:
- name: hello
image: gcr.io/<プロジェクト名>/hello:latest
imagePullPolicy: Always
ports:
- name: http-server
containerPort: 8080
创建service.yaml文件
apiVersion: v1
kind: Service
metadata:
name: hello
labels:
app: hello
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: http-server
selector:
app: hello
按順序進行。
$kubectl create -f deployment.yaml
$kubectl create -f service.yaml
通过 LoadBalancer 显示的 IP 地址进行访问。
$kubectl describe service hello
LoadBalancer Ingress: xx.xx.xx
只要通过浏览器访问并显示出时间,就完成了。
http://LoadBalancerに表示されたip/time
方便的命令(附加福利)
//deploymentの削除
kubectl delete deployment <name>
//serviceの削除
kubectl delete service <name>
用于Go的轻量级Docker镜像,从scratch开始构建 – Qiita
【Linux】学习Docker/Kubernetes初级| FiS项目
在Google Cloud上,使用Kubernetes引擎来运行Go Bookshelf。
使用GCP的Cloud Build | CyberAgent开发者博客
使用 GKE 来运行 Golang 应用程序容器 – 来自 kaneshin 的讯息
Docker状态确认
整理Docker批量删除命令 – Qiita