【k8s】kubernetes部署http-api(golang)之helloworld

2 篇文章 1 订阅
1 篇文章 0 订阅

1. golang程序

golang程序实现了一个简单的hello world接口,代码如下:

package main

import (
	"log"
	"net/http"
)

func main() {

	http.HandleFunc("/v1/test/helloword", hello)
	server := http.Server{
		Addr: ":8081",
	}
	err := server.ListenAndServe()
	if err != nil {
		panic(err)
	}
}

func hello(response http.ResponseWriter, request *http.Request) {
	_, err := response.Write([]byte("{\"msg\":\"hello kubernetes!\"}"))
	if err != nil {
		log.Println(err)
	}
}

运行验证golang程序,接口可成功访问到,golang程序无问题:
在这里插入图片描述

2. 容器化

编写Dockerfile,代码如下:

FROM golang:alpine
RUN mkdir /hello-world
COPY . /hello-world
WORKDIR /hello-world
RUN go build -o main .
CMD ["/hello-world/main"]

**编译镜像,**本例直接进入hello-world应用目录使用该目录下Dockerfile进行镜像编译,并将编译镜像命名为hello-world且打上v1.0.0的tag:
在这里插入图片描述
查看镜像:
在这里插入图片描述
**测试镜像,**运行镜像且将容器端口映射至物理机端口:
在这里插入图片描述
访问:
在这里插入图片描述
至此说明镜像无问题。

3. 推送镜像到仓库

docker默认镜像仓库为hub.docker。
登录镜像仓库:
在这里插入图片描述
镜像名称重命名为符合docker规范的名称:用户名/镜像名:tag
在这里插入图片描述
推送镜像到仓库:
在这里插入图片描述
仓库验证:
在这里插入图片描述

4. k8s部署

新建namespace(也可不建,用现有的或默认的default),本例采用yaml方式新建ns,yaml如下:

apiVersion: v1
kind: Namespace
metadata:
  name: hello-namespace

创建ns并查看ns:
在这里插入图片描述
使用deployment部署应用,deployment.yaml如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: hello-world-app
  name: hello-world-app
  namespace: hello-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: hello-world-app
  template:
    metadata:
      labels:
        app.kubernetes.io/name: hello-world-app
    spec:
      containers:
      - image: cherishyan/hello-world:v1.0.0
        name: hello-world-app
        ports:
        - containerPort: 8081

创建deployment并查看:
在这里插入图片描述
使用service的nodePort方式暴露服务,service.yaml如下:

apiVersion: v1
kind: Service
metadata:
  name: hello-world-app-service
  namespace: hello-namespace
  labels:
    k8s-app: hello-world-app-service
spec:
  type: NodePort
  ports:
  - name: hello-world-app-api
    port: 8081
    targetPort: 8081
    nodePort: 31111
  selector:
    app.kubernetes.io/name: hello-world-app

部署service并查看:
在这里插入图片描述
访问node公网ip和映射端口验证
在这里插入图片描述
服务部署成功。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级战斗王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值