準備知識:node
須要對構建docker鏡像, k8s搭建、部署應用,對deployment (nodeSelect, node親和性等),service, ingress編寫yml文件熟悉,不熟悉的先去打一下基礎再來看python
FROM python:2.7 MAINTAINER test <test@test.com> RUN mkdir /devpi && pip install devpi-server devpi-web EXPOSE 3141 ADD run.sh / CMD ["/bin/bash","run.sh"]
準備run.sh腳本(用來啓動devpi服務),跟Dockerfile放在同一目錄nginx
#!/bin/bash set -e set -x export DEVPI_SERVERDIR=/devpi [[ -f $DEVPI_SERVERDIR/.serverversion ]] || initialize=yes if [[ $initialize = yes ]]; then devpi-server --port 3141 --serverdir $DEVPI_SERVERDIR --init fi devpi-server --host 0.0.0.0 --port 3141 --serverdir $DEVPI_SERVERDIR
開始build鏡像, 建立的鏡像名爲devpi, 注意"."會在當前目錄自動尋找Dockerfileweb
(構建好鏡像以後,在本地就能看到名爲devpi的鏡像 : docker images 命令查看)docker
(flask
還能夠push到本身的docker鏡像倉庫(方便k8s在各個節點可以使用公有鏡像):api
)瀏覽器
(非必要,可用現有默認default名稱空間)bash
apiVersion: v1 kind: Namespace metadata: name: devpi labels: name: devpi
準備前:共享存儲app
(1)節點直接掛載共享存儲 (或者使用足夠空間的分區,在這裏使用掛載共享存儲此方法)
(2)使用PV, PVC部署共享存儲 (可選)
在要部署devpi的節點掛載共享存儲 (/data/devpi)
(必要)
開始編寫yml文件
apiVersion: apps/v1beta1 kind: Deployment metadata: name: devpi namespace: devpi labels: app: devpi spec: replicas: 2 template: metadata: labels: app: devpi spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node162 containers: - name: devpi image: devpi:latest ports: - containerPort: 3141 volumeMounts: - name: hosts mountPath: /etc/hosts - name: data mountPath: /devpi # imagePullSecrets: # - name: devpi volumes: - name: hosts hostPath: path: /etc/hosts - name: data hostPath: path: /data/devpi
準備前:
將devpi端口服務暴露出來
(1) nodePort (不採用,不能結合ingress使用)
(2) service (這裏採用此種方式)
apiVersion: v1 kind: Service metadata: name: devpi namespace: devpi labels: app: devpi spec: ports: - name: http port: 80 targetPort: 3141 selector: app: devpi
準備前:對pip.test.local域名添加解析
添加devpi service的ingress域名
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: devpi namespace: devpi spec: rules: - host: pip.test.local http: paths: - path: / backend: serviceName: devpi servicePort: 80
--trusted-host pip.test.local 這個很重要,要添加這個可信任
(
可在客戶端家目錄新建.pipi文件夾,新建pip.config文件
[install] trusted-host = localhost pip.test.local
)
有了pip.conf, 之後只須要輸入