將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
