k8s手工发布一个基于python的自定义应用
步骤:
1.定义一个命名空间(namespace):pytest
apiVersion: v1
kind: Namespace
metadata:
name: pytest
2.声明一个命名空间在pytest的deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: pytest-deployment
namespace: pytest
spec:
selector:
matchLabels:
app: pytest
replicas: 2
template:
metadata:
labels:
app: pytest
spec:
nodeName: k8s1
containers:
- name: pytest
image: 172.17.30.170/cicd/pythontest:v1
ports:
- containerPort: 5004
volumes:
- name: pytest
persistentVolumeClaim:
claimName: pytest-001
3.声明一个存储卷(PV)用nfs的方式数据持久化
apiVersion: v1
kind: PersistentVolume
metadata:
namespace: pytest
name: pytest-001
labels:
name: pytest-001
spec:
capacity:
storage: 10Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: pyest
mountOptions:
- hard
- nfsvers=4.1
nfs:
path: /nfs/data
server: 172.17.30.211
4.声明一个用户存储的请求(PVC),这里给到的权限是读写,根据个人需求修改
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pytest-001
namespace: pytest
spec:
storageClassName: pyest
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
5.声明一个命名空间在pytest的Service用于端口映射,把5004端口映射到80端口
apiVersion: v1
kind: Service
metadata:
name: pytest-service
namespace: pytest
spec:
selector:
app: pytest
ports:
- name: tcp
protocol: TCP
port: 80
targetPort: 5004
6.声明一个Ingress用于把流量转发到对应域名的80端口
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: pytest
name: ingress-pytest
spec:
ingressClassName: nginx
rules:
- host: pytest.wuzexi.test
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: pytest-service
port:
number: 80