官方文档
kubectl文档: https://kubernetes.io/zh/docs/reference/kubectl/overview/
资源操作说明:https://kubernetes.io/zh/docs/reference/kubectl/overview/#%e8%b5%84%e6%ba%90%e7%b1%bb%e5%9e%8b
格式化输出:https://kubernetes.io/zh/docs/reference/kubectl/overview/
在主节点上部署一个tomcat
[root@k8s-node1 k8s]# kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8
deployment.apps/tomcat6 created
查看所有资源
[root@k8s-node1 k8s]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/tomcat6-5f7ccf4cb9-bfzp9 1/1 Running 0 108s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 47m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/tomcat6 1/1 1 1 108s
NAME DESIRED CURRENT READY AGE
replicaset.apps/tomcat6-5f7ccf4cb9 1
- 获取pod部署信息
[root@k8s-node1 k8s]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat6-5f7ccf4cb9-bfzp9 1/1 Running 0 2m48s 10.244.1.2 k8s-node2 <none> <none>
- Tomcat端口映射及暴露
在master上执行
kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort
运行结果
[root@k8s-node1 k8s]# kubectl expose deployment tomcat6 --port=80 --target-port=8080 --type=NodePort
service/tomcat6 exposed
[root@k8s-node1 k8s]# kubectl get svc -o wide # 查看服务
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 55m <none>
tomcat6 NodePort 10.96.77.34 <none> 80:30958/TCP 3m18s app=tomcat6
pod的80映射容器的8080;server会代理pod的80
- 访问测试验证暴露的端口
192.168.56.57 虚拟机IP
动态扩容
kubectl scale --replicas=3 deployment tomcat6
–replicas=3 代表3个副本
[root@k8s-node1 k8s]# kubectl scale --replicas=3 deployment tomcat6
deployment.apps/tomcat6 scaled
[root@k8s-node1 k8s]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat6-5f7ccf4cb9-bfzp9 1/1 Running 0 21m 10.244.1.2 k8s-node2 <none> <none>
tomcat6-5f7ccf4cb9-ns54w 1/1 Running 0 7m2s 10.244.2.2 k8s-node3 <none> <none>
tomcat6-5f7ccf4cb9-vmw6t 1/1 Running 0 7m2s 10.244.1.3 k8s-node2 <none> <none>
- 缩容
减少 --replicas即可实现缩容
kubectl scale --replicas=2 deployment tomcat6
运行结果
[root@k8s-node1 k8s]# kubectl scale --replicas=2 deployment tomcat6
deployment.apps/tomcat6 scaled
[root@k8s-node1 k8s]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat6-5f7ccf4cb9-bfzp9 1/1 Running 0 25m 10.244.1.2 k8s-node2 <none> <none>
tomcat6-5f7ccf4cb9-ns54w 1/1 Running 0 10m 10.244.2.2 k8s-node3 <none> <none>
tomcat6-5f7ccf4cb9-vmw6t 0/1 Terminating 0 10m 10.244.1.3 k8s-node2 <none> <none>
[root@k8s-node1 k8s]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
tomcat6-5f7ccf4cb9-bfzp9 1/1 Running 0 25m 10.244.1.2 k8s-node2 <none> <none>
tomcat6-5f7ccf4cb9-ns54w 1/1 Running 0 10m 10.244.2.2 k8s-node3 <none> <none>
- kubectl delete deployment.apps/tomcat6 删除部署信息
[root@k8s-node1 k8s]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/tomcat6-5f7ccf4cb9-bfzp9 1/1 Running 0 26m
pod/tomcat6-5f7ccf4cb9-ns54w 1/1 Running 0 11m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 71m
service/tomcat6 NodePort 10.96.77.34 <none> 80:30958/TCP 19m
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/tomcat6 2/2 2 2 26m
NAME DESIRED CURRENT READY AGE
replicaset.apps/tomcat6-5f7ccf4cb9 2 2 2 26m
[root@k8s-node1 k8s]# kubectl delete deployment.apps/tomcat6
deployment.apps "tomcat6" deleted
[root@k8s-node1 k8s]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/tomcat6-5f7ccf4cb9-ns54w 0/1 Terminating 0 12m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 72m
service/tomcat6 NodePort 10.96.77.34 <none> 80:30958/TCP 20m
- kubectl delete service/tomcat6 删除服务
[root@k8s-node1 k8s]# kubectl get all
NAME READY STATUS RESTARTS AGE
pod/tomcat6-5f7ccf4cb9-ns54w 0/1 Terminating 0 12m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 72m
service/tomcat6 NodePort 10.96.77.34 <none> 80:30958/TCP 20m
[root@k8s-node1 k8s]# kubectl delete service/tomcat6
service "tomcat6" deleted
[root@k8s-node1 k8s]# kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 73m
[root@k8s-node1 k8s]#