前言


前面介绍了一些关于k8s集群基础的理论知识,本次将结合实践加深对理论的理解。


一、Kubernetes 安装

鉴于学习环境限制,本次安装Minikube。minikube 是本地 Kubernetes,专注于让 Kubernetes 易于学习和开发。k8s一般用于linux系统中,由于仅用于学习和熟悉k8s命令,本次将按照所用系统,安装windows版的Minikube。官方教程

  1. 下载.exe安装包进行安装。
  2. 将安装目录添加到系统环境变量Path。安装目录默认是C:\Program Files\Kubernetes\Minikube
  3. 需要提前安装好docker,同样是windows版本并启动。
  4. 在cmd中运行命令minikube start以初始化并启动minikube。
  5. 之后可以使用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

2、关于部署应用程序

通过 kubectl run 命令可以在集群中运行指定镜像。对于部署镜像,启动应用方面而言,实际常用的并不是kubectl run, 而是kubectl creat或者kubectl applyapply用的相对更多。

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-bootcamp
default                kubernetes-bootcamp                         1/1     Running   0             28m

应用是部署在集群内的,如果没有将应用的服务向集群外进行暴露,那么使用url也无法直接访问到该服务。
直接访问会提示拒绝链接:

curl http://localhost:8001/version
curl: (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"
}

这里通过集群自带的转发访问我们部署的应用:

$ curl http://localhost:8001/api/v1/namespaces/default/pods/kubernetes-bootcamp/proxy/
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp | v=1

三、关于集群的特点说明

  • 自动负载均衡: 自动将请求分配到各个pod上进行响应。
  • 服务伸缩:更新应用的pod副本数量
  • 服务版本升级:更新应用使用的镜像用于升级。
    可以使用kubectl rollout status deployments/xxx查看升级过程,是逐一替换各个pod。
    可以使用kubectl rollout undo deployments/xxx快速回退到上一个版本。
  • 对于集群资源的故障排除常用的命令有:
    kubectl get : 列出资源
    kubectl describe : 显示有关资源的详细信息
    kubectl logs : 打印日志
    kubectl exec : 去容器上执行命令
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐