Kubernetes入门:最基本的goweb部署


尝试做一个Go应用程序的Docker镜像,把它部署到Kubernetes上运行。

go代码

创建Web.go

vim Web.go

如下图编写

package main

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

func handler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "欢迎使用Go语言")
}

func main() {
        http.HandleFunc("/", handler)
        fmt.Println("服务端口:8080")                 //控制台输出信息
        err := http.ListenAndServe(":8080", nil) //设置监听的端口
        if err != nil {
                log.Fatal("ListenAndServe: ", err)
        }
}

制作程序镜像

编写dockerfile

FROM golang:latest

MAINTAINER Razil "511728892@qq.com"

WORKDIR /usr/local/goweb/hellodocker
ADD . /usr/local/goweb/hellodocker
RUN go build .

EXPOSE 8080

ENTRYPOINT ["./hellodocker"]

创建镜像

docker build -t goweb .

别忘了后面有一个点 .

docker build :构建镜像
goweb: 名字为goweb
. (点号):dockerfile目录为当前目录
然后就会如下图开始构建镜像

Sending build context to Docker daemon  4.096kB
Step 1/7 : FROM golang:latest
 ---> 05c8f6d2538a
Step 2/7 : MAINTAINER Razil "511728892@qq.com"
 ---> Running in f5de5c4df6ee
Removing intermediate container f5de5c4df6ee
 ---> 4f4b66b2928e
Step 3/7 : WORKDIR /usr/local/goweb/hellodocker
 ---> Running in d483900b79d4
Removing intermediate container d483900b79d4
 ---> 811d05164139
Step 4/7 : ADD . /usr/local/goweb/hellodocker
 ---> 6514f1fa13a8
Step 5/7 : RUN go build .
 ---> Running in 7a1bad7df5ea
Removing intermediate container 7a1bad7df5ea
 ---> 281a1e178076
Step 6/7 : EXPOSE 8080
 ---> Running in 14fb90173498
Removing intermediate container 14fb90173498
 ---> 70e5c460347f
Step 7/7 : ENTRYPOINT ["./hellodocker"]
 ---> Running in 997cbf2145c3
Removing intermediate container 997cbf2145c3
 ---> a4547611b8d4
Successfully built a4547611b8d4
Successfully tagged goweb:latest

测试镜像

docker run -p 8080:8080 hellodocker

在浏览器输入masterip:8080
在这里插入图片描述
测试成功

将goweb镜像推送的DockerHub上

在Dockerhub上创建账号
我的账号是13806610088

首先为镜像打上标签

docker tag goweb 13806610088/k8s:goweb

然后登陆DockerHub

docker login

输入自己的账号密码
Login Succeeded 连接成功后
push自己的镜像到DockerHub上

docker push 13806610088/k8s:goweb

上传速度很慢而且很容易失败,失败后多次尝试
在这里插入图片描述
若多次尝试还是失败后可转用阿里云仓库
使用上面定义的goweb.yaml创建Deployment对象来运行Go应用程序的容器:

kubectl create -f goweb.yaml

在这里插入图片描述
创建成功

应用部署完后还不能从外部直接访问,需要把刚才Deployment对象运行的应用程序作为Kubernetes的一个Service对外暴露。

kubectl expose deployment goweb --type=NodePort --name=goweb-svc --target-port=8080

查看

kubectl get svc

在这里插入图片描述
可以看到主机的31551端口映射到了Kubernetes运行着应用的容器的8080端口。在浏览器里使用Kubernetes集群IP加NodePort即可访问到Kubernetes部署的Go应用程序。
在这里插入图片描述
成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值