部署K8s應用服務java
1 搭建docker registry鏡像私服(或者使用Harbor搭建)node
docker run -d -p 5000:5000 --name registry2 --restart=always --privileged=true -v /var/docker/registry:/var/lib/registry registry2 #--restart 標誌會檢查容器的退出代碼,並據此來決定是否要重啓容器,默認是不會重啓 #--restart的參數說明 # always:不管容器的退出代碼是什麼,Docker都會自動重啓該容器 # on-failure:只有當容器的退出代碼爲非0值的時候纔會自動重啓
2 構建鏡像並上傳到docker registrydocker
配置Dockerfile構建後端
FROM java EXPOSE 8809 ADD ./app-svc.jar app-svc.jar CMD java -jar ./app-svc.jar
docker build -t app-server .api
上傳應用服務鏡像app
鏡像標記爲 192.168.33.11:5000/app-svc:v1 docker tag app-svc 192.168.33.11:5000/app-svc:v1 docker push 192.168.33.11:5000/app-svc:v1
3 在master節點建立服務ui
配置K8s文件app-svc.yaml以下:rest
apiVersion: v1 kind: ReplicationController metadata: name: app-svc-rc spec: replicas: 2 selector: name: gw template: metadata: labels: name: app-svc spec: containers: - name: app-svc image: 192.168.33.11:5000/app-svc:v2 ports: - containerPort: 8809
配置K8s文件app-svc.yaml以下:code
apiVersion: v1 kind: Service metadata: name: app-svc-svc1 spec: ports: - port: 8099 targetPort: 8099 nodePort: 30099 type: NodePort selector: name: app-svc
建立server
kubectl create -f app-svc.yaml
檢查
kubectl get po
4 訪問http://192.168.33.10:30099
5 FYI:
# 1. nodePort 外部流量訪問k8s集羣中service入口的一種方式(另外一種方式是LoadBalancer),是提供給外部流量訪問k8s集羣中service的入口 # 2. port k8s集羣內部服務之間訪問service的入口,即clusterIP:port是service暴露在clusterIP上的端口 # 3. targetPort 容器的端口(最終的流量端口),targetPort是pod上的端口,從port和nodePort上來的流量,通過kube-proxy流入到後端pod的targetPort上,最後進入容器