將k8s-web項目制作成鏡像
構建 study/k8s-web:1.0 鏡像
構建java環境並上傳jar包
docker pull java:8u111

mkdir /usr/dockerfile -p(將k8s-web.jar上傳到 /usr/dockerfile 目錄下)
vim dockerfile-demo
FROM java:8u111 COPY k8s-web.jar /root CMD ["nohup","java","-jar","/root/k8s-web.jar","&"]
構建鏡像(注意:
需要在 /usr/dockerfile 目錄下執行以下命令,命令行最后的空格和.不能去掉)
docker build -f dockerfile-demo -t study/k8s-web:v1 .

docker images

將k8s-web項目鏡像推送到阿里雲
docker login --username=你的阿里雲用戶名 registry.cn-hangzhou.aliyuncs.com
給k8s-web鏡像打標簽:
sudo docker images
sudo docker tag 5e365da78fe3 registry.cn-hangzhou.aliyuncs.com/hlyao/k8-test:v1

sudo docker push registry.cn-hangzhou.aliyuncs.com/hlyao/k8-test:v1

將阿里雲鏡像拉取到k8s集群並運行
kubectl run k8s-web --image=registry.cn-hangzhou.aliyuncs.com/hlyao/k8-test:v1

查看deployment

查看pod

可以看到,項目已運行成功。
公布應用
我們已經將項目部署成功,但目前這個服務是運行在k8s集群內部,我們無法在外部對其進行訪問,若要訪問它,則需要配置一個對外公布的Service。
編寫一個k8s-web-service.yaml:
--- apiVersion: v1 kind: Service metadata: name: k8s-web namespace: default spec: ports: - name: client nodePort: 30002 port: 8080 protocol: TCP targetPort: 8080 selector: run: k8s-web sessionAffinity: None type: NodePort
注意:這里的nodePort取值范圍必須在30000-32767之間
上傳到master節點的/root目錄下,執行以下命令:
kubectl apply -f k8s-web-service.yaml
查看service:

開放30002端口:
systemctl disable firewalld.service
systemctl start firewalld.service
firewall-cmd --zone=public --add-service=30002/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
有時可能需要重啟虛擬機,才能訪問到對應的服務。
測試部署在k8s集群上的服務
數據庫連接配置:

查詢數據:

添加數據:


更新數據:


刪除數據:


k8s相關命令
k8s刪除pod命令:
kubectl delete pod pod名稱
查看pod運行節點情況:
kubectl get pod -n kube-system -o wide(查看名為 kube-system 的命名空間中的pod運行情況)
查看pod資源(非常詳細):
kubectl describe pod
獲取deployment:
kubectl get deployment(查看基本信息)
kubectl get deployment -n default -o wide(查看較詳細信息)

刪除deployment:
kubectl delete deployment 服務名
查看pod(容器組):
kubectl get pod -n default -o wide
查看label信息:
kubectl get pod --show-labels
