クバーネディスで実行するGoコンテナを作成
7536 ワード
クーバーネス実習のためにGoを利用してコンテナを作ります.
Goって何?
Goって何?
これはグーグルが開発したプログラミング言語で、クバーネスとともに急速に成長したプログラミング言語です.
Goの使い方については、この記事で詳しく紹介されていなければ、後でGoを学ぶ機会があればまとめてみます.
Goインストール
右奮闘環境では、他のアプリケーションのようにapt installコマンドでインストールできます.sudo apt install golang
Macでは、ホームブルーを使っても簡単にインストールできます.brew install golang
窓口でも高朗の公式サイトからダウンロードできるそうです.
Goアプリケーション作成
hostnameを簡単に出力するアプリケーションを作成しました.以下に示します.package main
import (
"fmt"
"github.com/julienschmidt/httprouter"
"log"
"net/http"
"os"
)
func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
hostname, err := os.Hostname()
if err == nil {
fmt.Fprint(w, "Welcome! "+hostname+"\n")
} else {
fmt.Fprint(w, "Welcome! Error\n")
}
}
func main() {
router := httprouter.New()
router.GET("/", Index)
log.Fatal(http.ListenAndServe(":8080", router))
}
このアプリケーションを実行するには、リボンからhttpouterパッケージをダウンロードする必要がありますが、次のコマンドを実行することで入手できます.go get github.com/julienschmidt/httprouter
次に、次のコマンドでアプリケーションを構築します.go build main.go
アプリケーションを実行すると、8080ポートで正常に動作していることがわかります.
Dockerによるイメージ
Dockerを使用して画像化するにはdockerfileを作成する必要があります.
次のdockerfileは、作業中のディレクトリに作成できます.FROM golang:1.11
WORKDIR /GolandProjects/awesomeProject
Copy main /GolandProjects/awesomeProject
CMD ["/GolandProjects/awesomeProject/main"]
その後docker buildコマンドで画像を生成します.sudo docker build -t http_go .
この画像を使用してコンテナを実行します.sudo docker run -d -p 8080:8080 --rm http_go
正常に動作していることを確認できます.
Dockerhubで画像をリフレッシュしますsudo docker login
sudo docker tag http_go therealslimadam/http_go
sudo docker push therealslimadam/http_go
GCPクーバー本体クラスタで動作
以前に作成したGCPのクバーネディスクラスタで作成したmainを接続します.goの実行
まずクラスタにgoをインストールしますsudo apt install golang
次はVimで作成したmainです.コピーしてgoを貼り付けます.vim main.go
GCPも以前のように傘下でパッケージを受けています.go get github.com/julienschmidt/httprouter
ローカルと同じmain.goのバージョンを構築します.go build main.go
次のコマンドを実行して生成されたファイル./main
GCP Shellには「Webプレビュー」というボタンがあり、8080ポートで実行されるプログラムを開くことができます.
http goというディレクトリを作成し、構築したファイルを移動し、dockerfileを実行します. mkdir http_go
mv main ./http_go/
cd http_go/
vim dockerfile
ドッキングファイルは次のとおりです.FROM golang:1.11
WORKDIR /usr/src/app
COPY main /usr/src/app
CMD ["/usr/src/app/main"]
イメージを作るdocker build -t http-go .
箱を開けるdocker run -d -p 8080:8080 --rm http-go
同様に、Webプレビューでは、コンテナが正常に動作していることがわかります.
私はハーブをドックでブッシュを作ります.
まずDocHubにログインし、画像のtagを変更します.docker login
docker tag http-go therealslimadam/http-go
そしてプッシュ命令語でプッシュします.docker push therealslimadam/http-go
通常、ドックハッブルに放出されたことを確認することができます.
ドッキングイメージを使用してGCPクラスタ上にPodを作成する
ドックの中心に配置された画像を用いてGCPクラスタにpodを作成する.kubectl create deploy http-go --image=therealslimadam/http-go
クレーンを外にさらすkubectl expose deployment http-go --type=LoadBalancer --port=80 --target-port=8080
pod数を制御するコピーセットは、次のコマンドで調整できます.
例として、3つのpodを3に設定して、導入します.kubectl scale deployment http-go --replicas=3
反映が正常であることが確認できます.
サービスの外部IPで接続すれば、ロード・バランシングが正常であることも確認できます.
Reference
この問題について(クバーネディスで実行するGoコンテナを作成), 我々は、より多くの情報をここで見つけました
https://velog.io/@ubrain/쿠버네티스에서-실행할-Go-컨테이너-작성
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
右奮闘環境では、他のアプリケーションのようにapt installコマンドでインストールできます.
sudo apt install golang
Macでは、ホームブルーを使っても簡単にインストールできます.brew install golang
窓口でも高朗の公式サイトからダウンロードできるそうです.Goアプリケーション作成
hostnameを簡単に出力するアプリケーションを作成しました.以下に示します.package main
import (
"fmt"
"github.com/julienschmidt/httprouter"
"log"
"net/http"
"os"
)
func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
hostname, err := os.Hostname()
if err == nil {
fmt.Fprint(w, "Welcome! "+hostname+"\n")
} else {
fmt.Fprint(w, "Welcome! Error\n")
}
}
func main() {
router := httprouter.New()
router.GET("/", Index)
log.Fatal(http.ListenAndServe(":8080", router))
}
このアプリケーションを実行するには、リボンからhttpouterパッケージをダウンロードする必要がありますが、次のコマンドを実行することで入手できます.go get github.com/julienschmidt/httprouter
次に、次のコマンドでアプリケーションを構築します.go build main.go
アプリケーションを実行すると、8080ポートで正常に動作していることがわかります.
Dockerによるイメージ
Dockerを使用して画像化するにはdockerfileを作成する必要があります.
次のdockerfileは、作業中のディレクトリに作成できます.FROM golang:1.11
WORKDIR /GolandProjects/awesomeProject
Copy main /GolandProjects/awesomeProject
CMD ["/GolandProjects/awesomeProject/main"]
その後docker buildコマンドで画像を生成します.sudo docker build -t http_go .
この画像を使用してコンテナを実行します.sudo docker run -d -p 8080:8080 --rm http_go
正常に動作していることを確認できます.
Dockerhubで画像をリフレッシュしますsudo docker login
sudo docker tag http_go therealslimadam/http_go
sudo docker push therealslimadam/http_go
GCPクーバー本体クラスタで動作
以前に作成したGCPのクバーネディスクラスタで作成したmainを接続します.goの実行
まずクラスタにgoをインストールしますsudo apt install golang
次はVimで作成したmainです.コピーしてgoを貼り付けます.vim main.go
GCPも以前のように傘下でパッケージを受けています.go get github.com/julienschmidt/httprouter
ローカルと同じmain.goのバージョンを構築します.go build main.go
次のコマンドを実行して生成されたファイル./main
GCP Shellには「Webプレビュー」というボタンがあり、8080ポートで実行されるプログラムを開くことができます.
http goというディレクトリを作成し、構築したファイルを移動し、dockerfileを実行します. mkdir http_go
mv main ./http_go/
cd http_go/
vim dockerfile
ドッキングファイルは次のとおりです.FROM golang:1.11
WORKDIR /usr/src/app
COPY main /usr/src/app
CMD ["/usr/src/app/main"]
イメージを作るdocker build -t http-go .
箱を開けるdocker run -d -p 8080:8080 --rm http-go
同様に、Webプレビューでは、コンテナが正常に動作していることがわかります.
私はハーブをドックでブッシュを作ります.
まずDocHubにログインし、画像のtagを変更します.docker login
docker tag http-go therealslimadam/http-go
そしてプッシュ命令語でプッシュします.docker push therealslimadam/http-go
通常、ドックハッブルに放出されたことを確認することができます.
ドッキングイメージを使用してGCPクラスタ上にPodを作成する
ドックの中心に配置された画像を用いてGCPクラスタにpodを作成する.kubectl create deploy http-go --image=therealslimadam/http-go
クレーンを外にさらすkubectl expose deployment http-go --type=LoadBalancer --port=80 --target-port=8080
pod数を制御するコピーセットは、次のコマンドで調整できます.
例として、3つのpodを3に設定して、導入します.kubectl scale deployment http-go --replicas=3
反映が正常であることが確認できます.
サービスの外部IPで接続すれば、ロード・バランシングが正常であることも確認できます.
Reference
この問題について(クバーネディスで実行するGoコンテナを作成), 我々は、より多くの情報をここで見つけました
https://velog.io/@ubrain/쿠버네티스에서-실행할-Go-컨테이너-작성
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
package main
import (
"fmt"
"github.com/julienschmidt/httprouter"
"log"
"net/http"
"os"
)
func Index(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
hostname, err := os.Hostname()
if err == nil {
fmt.Fprint(w, "Welcome! "+hostname+"\n")
} else {
fmt.Fprint(w, "Welcome! Error\n")
}
}
func main() {
router := httprouter.New()
router.GET("/", Index)
log.Fatal(http.ListenAndServe(":8080", router))
}
go get github.com/julienschmidt/httprouter
go build main.go
Dockerを使用して画像化するにはdockerfileを作成する必要があります.
次のdockerfileは、作業中のディレクトリに作成できます.
FROM golang:1.11
WORKDIR /GolandProjects/awesomeProject
Copy main /GolandProjects/awesomeProject
CMD ["/GolandProjects/awesomeProject/main"]
その後docker buildコマンドで画像を生成します.sudo docker build -t http_go .
この画像を使用してコンテナを実行します.sudo docker run -d -p 8080:8080 --rm http_go
正常に動作していることを確認できます.Dockerhubで画像をリフレッシュします
sudo docker login
sudo docker tag http_go therealslimadam/http_go
sudo docker push therealslimadam/http_go
GCPクーバー本体クラスタで動作
以前に作成したGCPのクバーネディスクラスタで作成したmainを接続します.goの実行
まずクラスタにgoをインストールしますsudo apt install golang
次はVimで作成したmainです.コピーしてgoを貼り付けます.vim main.go
GCPも以前のように傘下でパッケージを受けています.go get github.com/julienschmidt/httprouter
ローカルと同じmain.goのバージョンを構築します.go build main.go
次のコマンドを実行して生成されたファイル./main
GCP Shellには「Webプレビュー」というボタンがあり、8080ポートで実行されるプログラムを開くことができます.
http goというディレクトリを作成し、構築したファイルを移動し、dockerfileを実行します. mkdir http_go
mv main ./http_go/
cd http_go/
vim dockerfile
ドッキングファイルは次のとおりです.FROM golang:1.11
WORKDIR /usr/src/app
COPY main /usr/src/app
CMD ["/usr/src/app/main"]
イメージを作るdocker build -t http-go .
箱を開けるdocker run -d -p 8080:8080 --rm http-go
同様に、Webプレビューでは、コンテナが正常に動作していることがわかります.
私はハーブをドックでブッシュを作ります.
まずDocHubにログインし、画像のtagを変更します.docker login
docker tag http-go therealslimadam/http-go
そしてプッシュ命令語でプッシュします.docker push therealslimadam/http-go
通常、ドックハッブルに放出されたことを確認することができます.
ドッキングイメージを使用してGCPクラスタ上にPodを作成する
ドックの中心に配置された画像を用いてGCPクラスタにpodを作成する.kubectl create deploy http-go --image=therealslimadam/http-go
クレーンを外にさらすkubectl expose deployment http-go --type=LoadBalancer --port=80 --target-port=8080
pod数を制御するコピーセットは、次のコマンドで調整できます.
例として、3つのpodを3に設定して、導入します.kubectl scale deployment http-go --replicas=3
反映が正常であることが確認できます.
サービスの外部IPで接続すれば、ロード・バランシングが正常であることも確認できます.
Reference
この問題について(クバーネディスで実行するGoコンテナを作成), 我々は、より多くの情報をここで見つけました
https://velog.io/@ubrain/쿠버네티스에서-실행할-Go-컨테이너-작성
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
sudo apt install golang
vim main.go
go get github.com/julienschmidt/httprouter
go build main.go
./main
mkdir http_go
mv main ./http_go/
cd http_go/
vim dockerfile
FROM golang:1.11
WORKDIR /usr/src/app
COPY main /usr/src/app
CMD ["/usr/src/app/main"]
docker build -t http-go .
docker run -d -p 8080:8080 --rm http-go
docker login
docker tag http-go therealslimadam/http-go
docker push therealslimadam/http-go
ドックの中心に配置された画像を用いてGCPクラスタにpodを作成する.
kubectl create deploy http-go --image=therealslimadam/http-go
クレーンを外にさらすkubectl expose deployment http-go --type=LoadBalancer --port=80 --target-port=8080
pod数を制御するコピーセットは、次のコマンドで調整できます.例として、3つのpodを3に設定して、導入します.
kubectl scale deployment http-go --replicas=3
反映が正常であることが確認できます.サービスの外部IPで接続すれば、ロード・バランシングが正常であることも確認できます.
Reference
この問題について(クバーネディスで実行するGoコンテナを作成), 我々は、より多くの情報をここで見つけました https://velog.io/@ubrain/쿠버네티스에서-실행할-Go-컨테이너-작성テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol