前言一、Kubernetes 安装二、集群交互
1、查看集群状况2、关于部署应用程序 三、关于集群的特点说明
前言
前面介绍了一些关于k8s集群基础的理论知识,本次将结合实践加深对理论的理解。
一、Kubernetes 安装
鉴于学习环境限制,本次安装Minikube。minikube 是本地 Kubernetes,专注于让 Kubernetes 易于学习和开发。k8s一般用于linux系统中,由于仅用于学习和熟悉k8s命令,本次将按照所用系统,安装windows版的Minikube。官方教程
下载.exe安装包进行安装。将安装目录添加到系统环境变量Path。安装目录默认是C:Program FilesKubernetesMinikube需要提前安装好docker,同样是windows版本并启动。在cmd中运行命令minikube start以初始化并启动minikube。之后可以使用minikube stop来停止集群Minikube 会启动一个虚拟机,Kubernetes 集群运行在虚拟机上。minikube带有dashboard服务,用于可视化监控和查看minikube情况。在新的cmd终端上运行minikube dashboard 以启动该功能。
二、集群交互通过 kubectl 命令可以根 Kubernetes 交互。kubectl 命令的常用格式是:kubectl 动作 资源。作用是在指定的资源上执行指定的动作。执行运行命令kubectl 可以获取所有关于资源和动作的信息。官方说明文档也有详细说明。
1、查看集群状况查看 kubectl 是否安装成功,一般用查看版本反映:
kubectl version
会同时看到 client 和 server 两个版本号。其中,client 对应 kubectl 的版本,server 对应 Master 上安装的 Kubernetes 的版本。
查看集群的详情:kubectl cluster-info
查看集群node:kubectl get nodes
通过 kubectl run 命令可以在集群中运行指定镜像。对于部署镜像,启动应用方面而言,实际常用的并不是kubectl run, 而是kubectl creat或者kubectl apply。apply用的相对更多。
kubectl creat:用配置创建新资源,由于资源名称在名称空间中应该是唯一的,重复执行时,会报错。
kubectl apply:将配置应用于资源。 如果资源不存在,就创建新资源。重复执行时,配置有修改则资源更新,否则资源不变化。
这里使用kubectl run 将应用部署运行起来:
kubectl run kubernetes-bootcamp --image=jocatalin/kubernetes-bootcamp:v1 --port=8080
检查pod状态running后即成功:
kubectl get pod -A | grep kubernetes-bootcampdefault kubernetes-bootcamp 1/1 Running 0 28m
应用是部署在集群内的,如果没有将应用的服务向集群外进行暴露,那么使用url也无法直接访问到该服务。
直接访问会提示拒绝链接:
curl http://localhost:8001/versioncurl: (7) Failed to connect to localhost port 8001 after 2203 ms: Connection refused
kubectl proxy命令可以创建代理,将通信转发到集群范围的专用网络。代理可以通过 control-C 终止,并且在运行时不会显示任何输出,可以在其他终端窗口来运行该代理。
再次访问:
curl http://localhost:8001/version{ "major": "1", "minor": "23", "gitVersion": "v1.23.1", "gitCommit": "86ec240af8cbd1b60bcc4c03c20da9b98005b92e", "gitTreeState": "clean", "buildDate": "2021-12-16T11:34:54Z", "goVersion": "go1.17.5", "compiler": "gc", "platform": "linux/amd64"}
三、关于集群的特点说明 自动负载均衡: 自动将请求分配到各个pod上进行响应。服务伸缩:更新应用的pod副本数量服务版本升级:更新应用使用的镜像用于升级。
可以使用kubectl rollout status deployments/xxx查看升级过程,是逐一替换各个pod。
可以使用kubectl rollout undo deployments/xxx快速回退到上一个版本。对于集群资源的故障排除常用的命令有:
kubectl get : 列出资源
kubectl describe : 显示有关资源的详细信息
kubectl logs : 打印日志
kubectl exec : 去容器上执行命令