摘要:打開終端執行,再開一個終端輸入輸出,則表示該服務沒有問題。將服務打包成鏡像,然后將鏡像實例化并運行,方便部署。此處以我的賬號為例,需要推送到你自己的賬號。是一種自動化運維工具,本文主要需要了解,,三個概念。至此成功使用部署應用。
本文將以一個簡單的示例演示如何使用 Docker 與 Kubernetes 部署應用上線。
Http Service首先使用 Go 語言搭建一個簡單的 Http 服務,監聽 8080 端口。
main.go
package main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, World") }) http.ListenAndServe(":8080", nil) }
打開終端執行 go run main.go,再開一個終端輸入 curl http://127.0.0.1:8080 輸出 Hello,World 則表示該 Http 服務沒有問題。
將 Http 服務打包成 Docker 鏡像,然后將鏡像實例化并運行,方便部署。
構建Dockerfile
# 拉取 golang 鏡像,提供程序運行環境 FROM golang:1.11 # 創建 code 目錄,存放 golang 代碼 RUN mkdir /code # 將當前目錄下的文件拷貝到 docker 中的 code 目錄 COPY . /code/ # 將 code 目錄設為工作區 WORKDIR /code # 編譯 go 文件,輸入名字為 main 的二進制文件 RUN go build -o main . # 執行 code 目錄下 main 的二進制文件 ENTRYPOINT ["/code/main"]
執行 docker build -f ./Dockerfile -t go . 構建名字為 go 的鏡像。本地從 DockerHub 上拉取鏡像慢,推薦使Play with Docker構建。
由上圖可以看出除了我們拉取的 golang 鏡像還多出了我們自己構建的 go 鏡像。
驗證創建一個 go 鏡像的實例看下我們的 Http 服務是否已經啟動,執行 docker run -dt --name go go 基于 go 鏡像創建一個 go 的實例,執行 docker exec -it go sh 進入到 go 實例,執行 curl http://127.0.0.1:8080 查看是否輸入 Hello,World。
執行 docker tag 43f7215dd448 pldaily/go:helloworld 給我們的 go 鏡像打一個 tag,執行 docker push pldaily/go 將你的 go 鏡像推到 DockerHub。此處以我的賬號為例,需要推送到你自己的賬號。
執行 docker rm -f go 刪除之前生成的 go 實例,執行 docker run -d -p 80:8080 --name go go 將服務器 80 端口映射到 docker 內部 8080 端口,如果需要可再通過 nginx 反向代理實現部署。
雖然這樣也能達到部署的目的,但是 docker 實例進程與 nginx 均需要自己維護,讓我們看下 Kubernetes 能幫我們做些什么。
KubernetesKubernetes 是一種自動化運維工具,本文主要需要了解 Pod,Deloyment,Service 三個概念。
Pod 是Kubernetes 最基本的操作單元
Deployment 用于管理Pod
Service 提供 Pod 的對外訪問接口
MinikubeMinikube 是一個輕量級的 Kubernetes 實現,會在本機創建一臺虛擬機,并部署一個只包含一個節點的簡單集群。由于國內網絡問題,推薦使用阿里云鏡像的 Minikube。本地如果搭建有問題,可以使用Play with Kubernetes。
Deploymentgo-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: go-deployment labels: app: go spec: # 起 3 個replicated Pods replicas: 3 # 哪個 pod 被管理 selector: matchLabels: app: go # 運行的容器 template: metadata: labels: app: go spec: containers: - name: go # 要拉取的鏡像 image: pldaily/go:helloworld ports: # 暴露的端口 - containerPort: 8080
執行 kubctl create -f go-deployment.yaml 創建 Deployment,該 Deployment 會啟 3個 replicated Pods。
go-service.yaml
apiVersion: v1 kind: Service metadata: name: go-service spec: type: NodePort sessionAffinity: ClientIP selector: app: go ports: # svc 暴露的端口 - port: 8080 # 對外暴露的端口 nodePort: 30081
執行 kubctl create -f go-service.yaml 啟一個 service 將端口暴露出來。
至此成功使用 Kubernetes 部署應用。
參考https://my.oschina.net/u/2306127/blog/1647246
https://github.com/PLDaily/docker
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/27773.html
摘要:打開終端執行,再開一個終端輸入輸出,則表示該服務沒有問題。將服務打包成鏡像,然后將鏡像實例化并運行,方便部署。此處以我的賬號為例,需要推送到你自己的賬號。是一種自動化運維工具,本文主要需要了解,,三個概念。至此成功使用部署應用。 本文將以一個簡單的示例演示如何使用 Docker 與 Kubernetes 部署應用上線。 Http Service 首先使用 Go 語言搭建一個簡單的 Ht...
摘要:有很大一部分的休息時間都用來完成了我的第一本掘金小冊從上手到實踐小冊已經正式上線,特意送上各位小伙伴一份禮物,小冊折優惠。 時間飛逝,轉眼今年又要結束了。感謝還在關注的小伙伴,今年確實更新很少,能不取關的都是真愛... 今年發生了很多事情,留著過幾天年終總結的時候再說。有很大一部分的休息時間都用來完成了我的第一本掘金小冊 《Kubernetes 從上手到實踐》 showImg(http...
摘要:有很大一部分的休息時間都用來完成了我的第一本掘金小冊從上手到實踐小冊已經正式上線,特意送上各位小伙伴一份禮物,小冊折優惠。 時間飛逝,轉眼今年又要結束了。感謝還在關注的小伙伴,今年確實更新很少,能不取關的都是真愛... 今年發生了很多事情,留著過幾天年終總結的時候再說。有很大一部分的休息時間都用來完成了我的第一本掘金小冊 《Kubernetes 從上手到實踐》 showImg(http...
摘要:有很大一部分的休息時間都用來完成了我的第一本掘金小冊從上手到實踐小冊已經正式上線,特意送上各位小伙伴一份禮物,小冊折優惠。 時間飛逝,轉眼今年又要結束了。感謝還在關注的小伙伴,今年確實更新很少,能不取關的都是真愛... 今年發生了很多事情,留著過幾天年終總結的時候再說。有很大一部分的休息時間都用來完成了我的第一本掘金小冊 《Kubernetes 從上手到實踐》 showImg(http...
摘要:平臺上的微服務架構應用再來看一下我眼中的基于當前最流行的微服務架構的設計是什么樣的,即我們平臺上要運行的典型應用是什么樣的。 showImg(https://segmentfault.com/img/remote/1460000010900878); 8月19日的數人云Container Meetup上,張龍老師做了《基于Kubernetes的PaaS平臺的設計和思考》的精彩分享,分別...
閱讀 2169·2021-09-04 16:40
閱讀 1466·2021-08-13 15:07
閱讀 3609·2019-08-30 15:53
閱讀 3200·2019-08-30 13:11
閱讀 1078·2019-08-29 17:22
閱讀 1819·2019-08-29 12:47
閱讀 1479·2019-08-29 11:27
閱讀 2233·2019-08-26 18:42