美文网首页
本地搭建kubernetes,运行golang程序(mac环境)

本地搭建kubernetes,运行golang程序(mac环境)

作者: 莴牛 | 来源:发表于2021-12-29 11:34 被阅读0次

    1、mac安装docker

    系统要求:Docker Desktop for Mac
    内存要求:4GB的RAM
    下载地址:https://hub.docker.com/editions/community/docker-ce-desktop-mac

    安装方法:下载dmg文件,双击安装即可。
    双击Docker启动docker,docker官方注册账号登录。
    命令行执行docker info可查看docker信息

    docker-start

    2、安装kubernetes

    # 第一步 克隆详细
    git clone https://github.com/gotok8s/k8s-docker-desktop-for-mac.git
    
    # 第二步 进入 k8s-docker-desktop-for-mac项目,拉取镜像
    ./load_images.sh
    
    # 第三步 打开docker 配置页面,enable k8s。需要等k8s启动,如果安装成功,则会显示kubernetes running
    
    # 第四部 验证
    # 显示集群信息
    kubectl cluster-info
    # 查看k8s的所有node节点
    kubectl get nodes
    # 显示node详细
    kubectl describe node
    
    k8s-setting

    3.1、运行简单的golang程序

    # 编写简单的本地文件 main.go
    package main
    
    import (
        "net/http"
    )
    
    func main() {
        http.HandleFunc("/hello", func(response http.ResponseWriter, request *http.Request) {
            response.Write([]byte("hello kubernetes!"))
        })
        server := http.Server{
            Addr: ":8088",
        }
        err := server.ListenAndServe()
        if err != nil {
            panic(err)
        }
    }
    
    
    # 本地检查是否能运行
    go mod init hello
    go run main.go
    

    3.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且打上v1.0.0的tag:
    docker bulid -t hello:v1.0.0 .
    # 查看镜像
    docker image ls
    # 运行镜像
    docker run -p 8088:8088 hello:v1.0.0
    # 本地浏览器可以打开`http://127.0.0.1:8088/hello`访问
    
    # 将镜像名称重命名为符合docker规范的名称:用户名/镜像名:tag
    docker tag hello:v1.0.0 taoyulong/hello:v1.0.0
    # 推送镜像到仓库:
    docker push taoyulong/hello:v1.0.0
    
    docker-image

    4、k8s部署镜像

    4.1 新建namespace

    # 新建文件namespace.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
      name: hello-namespace
    
    # 新建命令,结果表示成功 namespace/hello created
    kubectl apply -f namespace.yaml
    # 或者执行命令
    kubectl create namespace hello
    # 查看命令
    kubectl get ns
    kubectl get namespace
    kubectl get namespace hello  
    # 删除命令
    kubectl delete namespaces hello
    

    4.2 创建deployment并查看

    # 新建文件deployment.yaml如下
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app.kubernetes.io/name: hello-world-app
      name: hello-world-app
      namespace: hello
    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: taoyulong/hello:v1.0.0
              name: hello-world-app
              ports:
                - containerPort: 8088
    
    # 运行,成功显示deployment.apps/hello-world-app created
    kubectl apply -f deployment.yaml
    # 查看
    kubectl get deployment -n hello
    # 查看明细
    kubectl describe deployment hello-world-app -n hello
    # 删除
    kubectl delete deployment hello-world-app -n hello
    

    4.3 部署service并查看

    # 新建文件service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: hello-world-app-service
      namespace: hello
      labels:
        k8s-app: hello-world-app-service
    spec:
      type: NodePort
      ports:
        - name: hello-world-app-api
          port: 8088
          targetPort: 8088
          nodePort: 30001
      selector:
        app.kubernetes.io/name: hello-world-app
    
    # 运行,成功显示 service/hello-world-app-service created
    kubectl apply -f service.yaml
    # 检测
    # 本地访问 `http://127.0.0.1:30001/hello`
    # 查看
    kubectl get svc -n hello 
    # 查看明细
    kubectl describe svc hello-world-app-service -n hello
    # 删除
    kubectl delete svc hello-world-app-service  -n hello
    

    部署成功

    # 其他命令,删除所有
    kubectl delete po,svc,statefulset,pv,pvc --all
    

    相关文章

      网友评论

          本文标题:本地搭建kubernetes,运行golang程序(mac环境)

          本文链接:https://www.haomeiwen.com/subject/lnkvqrtx.html