k8s部署springboot項目,zookeeper,redis,pgsl

安裝環境

  • 操作系統:centos7
  • docker:1.13.1
  • k8s: 1.5.2(單節點)
  • 如果沒有安裝docker和k8s的參照我前一篇博客安裝安裝k8s踩的一些坑

部署安裝步驟

1、先在docker裏面安裝redis、pgsql、zookeeper、
 1.1  docker search imageName //搜索鏡像 選擇合適版本然後
 1.2  docker pull imageName //拉下鏡像
 1.3  docker images //查看自己的鏡像倉庫是否有
 1.4  docker運行zookeeper、redis、pgsql安裝:
     docker run -d docker.io/redis  --name myredis -p 6379:6379 redis --requirepass "123456"
     docker run --name postgres -e POSTGRES_PASSWORD=123456 -p 5432:5432 -d docker.io/borgius/pgsql 
     docker run --privileged=true -d --name zookeeper1 --publish 2181:2181  -d docker.io/zookeeper
2、將自己的服務打成鏡像、(此處有2個服務、server、web服務)

2.1 創建Dockerfile文件、文件內容如下、(此處爲了方便,很多地方簡寫:如果是部署在
生產環境上,需要修改下日誌目錄,以及啓動方式) server dockerfile文件內容

FROM java:8
VOLUME /tmp    
COPY resources/* resources/ 
ADD  service-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

2.2 執行docker build -t 鏡像名字 . 命令進行構建鏡像、成功後使用docker images
查看自己的鏡像是否生成(注意鏡像名字後面有個空格和一個點. 表示當前目錄下)、
如果鏡像沒有生成需要重新執行構建,排查問題
2.3 創建web docker鏡像:同上 Dockerfile 文件內容如下:

 FROM java:8
VOLUME /tmp    
COPY resources/* resources/ 
ADD  web-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"] 
3、將server項目,和web項目部署到k8s裏面、使用環境變量連接外面數據源

3.1 執行命令 kubectl get node 查看節點是否正常(單節點如下:)

  NAME        STATUS    AGE
  127.0.0.1   Ready     6d

3.2 創建server、web項目的yaml文件、文件內容如下:

  注意:  對於文件開頭apiVersion版本:內容與k8s版本相關:
  1.6版本之前 apiVsersion:extensions/v1beta1
  1.6版本到1.9版本之間:apps/v1beta1
  1.9版本之後:apps/v1
  具體詳情可參考:

k8s的apiversion版本
server.yaml 文件內容:

 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
      name: server
      labels:
      app: server
 spec:
     replicas: 1
     selector:
     matchLabels:
     app: server
template:
metadata:
  labels:
    app: server
spec:
  containers:
  - name: server
    image: server //鏡像名字
    imagePullPolicy: Never  //表示從本地docker鏡像中獲取鏡像
    ports:
    - containerPort: 8087  //端口
    env:    //配置的環境變量
      - name:  ZOOKEEPER_HOST  //zookeeper ip地址
        value: '10.62.155.12'
      - name:  ZOOKEEPER_PORT //zookeeper 端口
        value:  '2181'
      - name:  REDIS_HOST   //redis
        value: '10.62.155.12'
      - name:  REDIS_PASSWORD  //密碼
        value: "123456"
      - name: PGSQL_SERVICE_HOST 
        value:  '10.62.55.12'
      - name: PGSQL_SERVICE_PORT
        value: "5432"
      - name:  PGSQL_PASSWORD
        value: "123456"
      - name:  PGSQL_USERNAME
        value: "postgres"

server-svc.yaml文件內容如下:

apiVersion: v1
kind: Service
metadata:
   name: yty-server
   namespace: default
labels:
app: server
spec:
  type: NodePort
  ports:
  - port: 8087
	 nodePort: 30001  //映射到外部機器端口、默認範圍:30000-65535 可修改
  selector:
	 app: server

web.yaml文件內容:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web
  labels:
    app: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: web
        imagePullPolicy: Never
        ports:
        - containerPort: 80
        env:
          - name:  ZOOKEEPER_HOST
            value: '10.62.155.12'
          - name:  ZOOKEEPER_PORT
            value:  '2181'

web-svc.yaml 文件內容如下:

apiVersion: v1
kind: Service
metadata:
  name: web
  namespace: default
  labels:
    app: web
spec:
  type: NodePort
  ports:
  - port: 80
    nodePort: 30003
  selector:
    app: web

3.3、創建k8s pod服務

1、 執行命令:kubectl create server.yaml
          kubectl create server-svc.yaml
          kubectl create web.yaml
          kubectl create web-svc.yaml
          如果文件單獨分開放:比如server.yaml 文件和server-svc文件單獨放在一起,
          可使用kubectl apply -f . 命令創建,注意後面有個. 表示當前目錄下:
           當更新yaml文件內容時,也可以用kubectl apply -f .來更新Pod
  
2、  執行完創建命令後:執行kubectl get pods 查看pod情況
NAME                          READY     STATUS    RESTARTS   AGE
server-1069855030-kshsf   1/1       Running   0          2d
web-3657954026-vf309      1/1       Running   0          2d
查看 pod項目日誌情況:  kubectl logs -f  server-1069855030-kshsf(pod名字)
3、如上:如果status 狀態爲running 則啓動正常。 然後在瀏覽器輸入id+映射端口 + 
項目即可訪問
4、一些相關k8s命令
     kubectl logs -f  server-1069855030-kshsf(pod名字)
    kubectl delete pod podName //刪除pod 刪除Pod的時候還必須刪除
                              // deployment 否則還會自動創建
    kubectl get  deployment //查看 deployment  情況
    kubectl delete  deployment   deploymentName//刪除 deployment 
    kubectl describe pod server-1069855030-kshsf 查看pod情況
    kubectl delete pod web-3657954026-j6tpq  -n default --force --grace-period=0 //如果無法刪除pod,
    可使用此強制刪除命令; 慎用
5 備註
  對於使用環境變量中的ip地址:必須在k8s集羣機器地址和外部機器地址在同一個局域網中可訪問。
  如果使用域名方式,必須搭建k8s集羣dns解析才能使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章