apiVersion: v1 kind: PersistentVolume metadata: name: nginx-pv spec: storageClassName: manual accessModes: - ReadWriteOnce capacity: storage: 1Gi hostPath: path: "/data" --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-pvc spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 1Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 volumeMounts: - mountPath: /usr/share/nginx/html/ name: nginx-pv volumes: - name: nginx-pv persistentVolumeClaim: claimName: nginx-pvc affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: name operator: In values: - k8s-worker-node2 --- apiVersion: v1 kind: Service metadata: labels: app: nginx name: nginx-svc spec: allocateLoadBalancerNodePorts: true ports: - nodePort: port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: LoadBalancer