知乎专栏 |
准备编排脚本
[root@localhost ~]# cat nginx.yaml apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 88 targetPort: 80 selector: app: nginx type: NodePort --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
部署
[root@localhost ~]# rancher kubectl create -f nginx.yaml service/nginx created deployment.apps/nginx created
查看状态
[root@localhost ~]# rancher kubectl get deployment -n default NAME READY UP-TO-DATE AVAILABLE AGE nginx 3/3 3 3 113s [root@localhost ~]# rancher kubectl get service -n default NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 156m nginx NodePort 10.43.111.205 <none> 88:32646/TCP 119s [root@localhost ~]# rancher kubectl get pods -n default NAME READY STATUS RESTARTS AGE nginx-585449566-kd2mk 0/1 ContainerCreating 0 14s nginx-585449566-mdl8n 0/1 ContainerCreating 0 14s nginx-585449566-v8s5k 0/1 ContainerCreating 0 14s
[root@localhost ~]# rancher kubectl describe services nginx Name: nginx Namespace: default Labels: app=nginx Annotations: field.cattle.io/publicEndpoints: [{"port":32646,"protocol":"TCP","serviceName":"default:nginx","allNodes":true}] Selector: app=nginx Type: NodePort IP Family Policy: SingleStack IP Families: IPv4 IP: 10.43.111.205 IPs: 10.43.111.205 Port: <unset> 88/TCP TargetPort: 80/TCP NodePort: <unset> 32646/TCP Endpoints: 10.42.0.40:80,10.42.0.41:80,10.42.0.42:80 Session Affinity: None External Traffic Policy: Cluster Events: <none>
https://github.com/rancher/local-path-provisioner
local-path 即 pod 销毁之后,数据仍然存储在磁盘上,实验过程:
kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pvc/pvc.yaml kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pod/pod.yaml
kubectl exec volume-test -- sh -c "echo local-path-test > /data/test"
kubectl delete -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pod/pod.yaml kubectl create -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pod/pod.yaml
$ kubectl exec volume-test -- sh -c "cat /data/test" local-path-test
kubectl delete -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pod/pod.yaml kubectl delete -f https://raw.githubusercontent.com/rancher/local-path-provisioner/master/examples/pvc/pvc.yaml