1. 程式人生 > >k8s環境部署本地.net core web專案

k8s環境部署本地.net core web專案

    上一篇文章,我們部署了docker+k8s環境,簡單測試通過,但是,還沒能將我們自己的專案部署上去,繼續記錄部署踩坑過程。

一、準備工作

    1、當然是docker+k8s環境了,詳情請看上一篇文件 https://www.cnblogs.com/CoderLinkf/p/12395710.html

    2、如果你部署好環境,重啟過,建議先kubeadm reset,重新關閉防火牆,swap重新init一下

systemctl stop firewalld
setenforce 0
swapoff -a
kubeadm init --apiserver-advertise-address=192.168.3.180 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.17.3 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

  別忘了改ip,接下來,重新安裝flannel,詳情請看上一篇文件安裝,這裡還沒有找到重啟後環境不變的方法,最後你得到下圖結果:

 

 同理,node節點也需要重新執行。

二、開始部署

  1、首先,將專案釋出到檔案系統,ftp到centos系統,這步不細說了

  2、DockerFile:放在專案儲存的目錄下

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /dockerdemo
EXPOSE 80

COPY . .
ENTRYPOINT ["dotnet", "Application.web.dll"]

  3、拉取映象,記得cd到目錄下面,dockerdemo可以改成自己的專案

docker build -t dockerdemo .

  4、docker images,檢視映象

 

  5、到此,部署了master節點的映象,接下來,同樣的操作,在node節點拉取映象(本地專案必須的)

  6、做完上面的工作,我們開始編寫web-pod.yaml,當然檔名不重要,重要的是.yaml內容

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web1
  labels:
    k8s-app: web1
spec:
  replicas: 2
  selector:
    matchLabels:
      k8s-app: web1
  template:
    metadata:
      labels:
        k8s-app: web1
    spec:
      containers:
      - name: web1
        image: dockerdemo
        imagePullPolicy: Never
        ports:
        - containerPort: 80
---
kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: web1
  name: web1
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
  selector:
    k8s-app: web1

  解釋一下:

  name可以改,

  replicas引數表示工作副本,執行成功後會執行相應的pod數量在節點中

  image:本地映象名稱

  imagePullPolicy:因為是在本地,所以不從pull拉取映象,Never(IfNotPresent:如果本地沒有,拉取pull映象;Always:總是從pull拉取)

  其他引數就不解釋了,可以瞭解一下https://www.bbsmax.com/A/obzbN4AyzE/

  當然了,yaml檔案格式非常嚴格,一不小心就會驗證失敗,可以在https://www.json2yaml.com/convert-yaml-to-json進行驗證格式

  7、執行pod

kubectl create -f web-pod.yaml

  如果順利的話,執行

kubectl get pod -o wide

  可以看到

 

 這裡的兩個,即上面配置的replicas效果

kubectl get pod,svc -o wide

  執行kubectl get pod,svc -o wide,如果出現下圖所示,狀態為running

 

  恭喜你,成功了,訪問圖上所示的連結http://192.168.3.180:30165/即可看到我們的網站

如果失敗了,可以檢視pod的日誌

kubectl describe pod web1-58f6d7d9b5-mlbx2

  這裡的pod名,可以通過上面的kubectl get pods來檢視

更復雜的日誌:

kubectl create -f web-pod.yaml

  

 

&n