Appearance
k8s-yaml-模版
Namespace
yaml
apiVersion: v1
kind: Namespace
metadata:
name: pingcx-prodDeployment.frontend
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pingcx-frontend
namespace: pingcx-prod
labels:
app: pingcx
component: frontend
env: prod
spec:
replicas: 2
selector:
matchLabels:
app: pingcx
component: frontend
env: prod
template:
metadata:
labels:
app: pingcx
component: frontend
env: prod
spec:
containers:
- name: frontend
image: pingcx-frontend:1.0.0
ports:
- containerPort: 80Deployment.backend
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: pingcx-backend
namespace: pingcx-prod
labels:
app: pingcx
component: backend
env: prod
spec:
replicas: 2
selector:
matchLabels:
app: pingcx
component: backend
env: prod
template:
metadata:
labels:
app: pingcx
component: backend
env: prod
spec:
containers:
- name: backend
image: pingcx-backend:1.0.0
ports:
- containerPort: 8080Service.frontend
yaml
apiVersion: v1
kind: Service
metadata:
name: pingcx-frontend
namespace: pingcx-prod
labels:
app: pingcx
component: frontend
env: prod
spec:
type: ClusterIP
selector:
app: pingcx
component: frontend
env: prod
ports:
- port: 80
targetPort: 80Service.backend
yaml
apiVersion: v1
kind: Service
metadata:
name: pingcx-backend
namespace: pingcx-prod
labels:
app: pingcx
component: backend
env: prod
spec:
type: ClusterIP
selector:
app: pingcx
component: backend
env: prod
ports:
- port: 8080
targetPort: 8080ConfigMap
yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: pingcx-backend-config
namespace: pingcx-prod
data:
log_level: "info"
app_id: 1000Secret
yaml
apiVersion: v1
kind: Secret
metadata:
name: pingcx-backend-secret
namespace: pingcx-prod
type: Opaque # 这是啥
stringData:
api_key: "???"PV/PVC
pv
yaml
# pv-hostpath.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-hostpath
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/pv-test
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- k8s-01pvc
yaml
# pvc-test.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-test
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mipod
yaml
# pod-using-pvc.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-pv-test
spec:
nodeSelector:
kubernetes.io/hostname: k8s-01
containers:
- name: test-container
image: busybox
command: ["sleep", "3600"]
volumeMounts:
- mountPath: "/mnt/data"
name: test-volume
volumes:
- name: test-volume
persistentVolumeClaim:
claimName: pvc-test验证实验:
- kubectl apply -f 上面三个 yaml。
- kubectl get pv,pvc 看状态是不是 Bound。
- kubectl exec -it pod-pv-test -- sh 进去容器,cd /mnt/data && echo hello > test.txt。
- 退出容器,再登上宿主机 cat /data/pv-test/test.txt 看是不是写进去了。