目錄
一、實驗
1.Go服務發布到k8s集群
二、問題
1.如何從Harbor拉取鏡像
一、實驗
1.Go服務發布到k8s集群
(1)linux機器安裝go(基于CentOS 7系統)
yum install go -y
(2)查看版本
go version
(3)創建源碼文件
[root@master1 ~]# mkdir test
[root@master1 ~]# cd test/
[root@master1 test]# cat main.go
package mainimport ("net/http""github.com/gin-gonic/gin"
)func statusOKHandler(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"status": "success~welcome to study"})
}func versionHandler(c *gin.Context) {c.JSON(http.StatusOK, gin.H{"version": "v1.1版本"})
}func main() {router := gin.New()router.Use(gin.Recovery())router.GET("/", statusOKHandler)router.GET("/version", versionHandler)router.Run(":8080")
}
?注意這里有小括號:
這里有2個雙引號
(4)Go mod初始化項目
go mod init test
(5)設置代理
go env -w GOPROXY=https://goproxy.cn,direct
go mod tidy
(6)構建源碼
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o k8s-demo main.go
K8s-demo 為二進制文件:
(7)編寫dockerfile文件
實現功能:容器里封裝二進制代碼
[root@master1 test]# cat Dockerfile
FROM alpine
ADD k8s-demo /data/app/
WORKDIR /data/app/
CMD ["/bin/sh","-c","./k8s-demo"]
(8)構建鏡像
docker build -t david/k8sdemo:v1 .
(9)打包鏡像,傳到k8s工作節點
docker save -o k8sdemo.tar.gz david/k8sdemo:v1
scp k8sdemo.tar.gz node1:/root/
(10)在node1節點解壓鏡像
docker load -i k8sdemo.tar.gz
(11)創建deployment的yaml文件
[root@master1 test]# cat k8s.yaml apiVersion: apps/v1kind: Deploymentmetadata:name: k8s-demonamespace: defaultlabels:app: k8s-demospec:selector:matchLabels:app: k8s-demoreplicas: 4template:metadata:labels:app: k8s-demospec:containers:- image: david/k8sdemo:v1imagePullPolicy: IfNotPresentname: k8s-demoports:- containerPort: 8080protocol: TCPresources:limits:cpu: 100mmemory: 100Mirequests:cpu: 50mmemory: 50MilivenessProbe:tcpSocket:port: 8080initialDelaySeconds: 10timeoutSeconds: 3readinessProbe:httpGet:path: /port: 8080initialDelaySeconds: 10timeoutSeconds: 2---apiVersion: v1kind: Servicemetadata:name: k8s-demo-svcnamespace: defaultlabels:app: k8s-demospec:ports:- name: apiport: 8080protocol: TCPtargetPort: 8080selector:app: k8s-demo
(12)更新yaml文件
kubectl apply -f k8s.yaml
(13)查看pod和svc
kubectl get pods
kubectl get svc
(14)修改svc的type類型變成nodePort
kubectl edit svc k8s-demo-svc
修改前:
修改后:
(15)查看svc
kubectl get svc
(16)瀏覽器訪問測試
二、問題
1.如何從Harbor拉取鏡像
(1)每個節點修改配置文件
vim /etc/docker/daemon.json
#增加如下代碼:"log-driver": "json-file",
"log-opts": {"max-size": "100m"}, "insecure-registries": ["https://192.168.204.110"]
(2)Harbor新建項目
(3)查看鏡像
docker images
(4)新打標簽
docker tag david/k8sdemo:v1 192.168.204.110/david-project/k8sdemo:v1
(5)如遇到Harbor登錄不了
(6)啟動
cd /data/install/harbor
docker-compose start
(7)成功