1、常用基础命令
kubectl top pod -n wsmp
kubectl get pod # 获取namespace下的所有podkubectl get pods -o wide # 获取 pod 详细信息
kubectl describe po ${podName} # 获得pod的状态kubectl get po ${podName} -o yaml # yaml 看不惯的话,也可以改为 json
kubectl exec -ti ${podName} -- /bin/ash # 进入pod 查看日志kubectl logs -p -nwsmp pod name 上一个实例的日志
kubectl logs -f -nwsmp pod nam 流式展示
2、概念相关
2.1 Controller
1.ReplicaSet : 确保预期的Pod副本数量,很少直接使用,需要被Deployment管理。
2.Deployment : 作用于一组Pod的创建和运行,控制pod应用的升级、回滚,当然也能控制pod的数量。
2.2 Deployment
定义Deployment来创建Pod和ReplicaSet
- 滚动升级和回滚应用
- 扩容和缩容
- 暂停和继续Deployment
2.3 Service
在K8S中,一方面Pod有伸缩与重新部署的需求,Pod的IP大多数情况是不固定的,另一方面,同一组Pod之间也有负载均衡的需要。因此,一组Pod被抽象成一个Service统一向外暴露。Service与其后端Pod副本集群之间则是通过Label Selector实现关联。
- ClusterIP:提供一个集群内部的虚拟IP(clusterIP),以便在集群内部通过clutserIP:port访问;
- NodePort:在每个节点上打开一个端口,在集群外部可以通过nodeIP:nodePort访问,在内部依然可以通过clutserIP:port 访问;
- LoadBalancer:通过外部的负载均衡器来访问,多用于公有云上。
Service vs Deployment
- Service是从网络角度的抽象概念,类似于Nginx做负载均衡提供的统一网络入口;
- Pod是最终的应用部署实体;
- Deoplyment 负责创建和保持pod运行状态。
get secret -nnskubectl delete secret name -nnskubectl get secret -nns|grep gaeakubectl delete secret name -nnskubectl get pod -nnskubectl get svc -nnskubectl get deploy -nns
其他
-
k8s中的apiVersion版本,可以使用命令
kubectl api-versions
查看,这里列举三个常见的 -
kubectl日志查看:
journalctl -xefu kubelet = tail -f /var/log/messages
-
docker相关
docker container ls -a :列出所有容器 systemctl show --property ActiveState docker : dockerd是否在本地计算机上运行 systemctl start docker: 启动docker system restart docker: 重启docker docker.sock不能创建:rm -rf /var/run/docker.sock,再重启docker
-
查看test下pod的镜像
kubectl -n test get pods | grep Running | awk '{print $1}' | xargs -r -I '{}' kubectl -n wsmp get pods {} -o=jsonpath='{.status.containerStatuses[0].image}{"\n"}' | sort
-
port、nodePort、targetPort、containerPort
port和nodePort都是service的端口,前者暴露给k8s集群内部服务访问,后者暴露给k8s集群外部流量访问。从这两个端口到来的数据都需要经过反向代理kube-proxy,流入后端pod的targetPort上,最后到达pod内容器的containerPort。