欢迎光临散文网 会员登陆 & 注册

学习日志21-12-14 K8s入门 - 无状态服务

2021-12-14 17:14 作者:mayoiwill  | 我要投稿

K8s入门 - 无状态服务

=====================


# 目标

- 搭建无状态服务集群

- 创建pod

- 部署应用

- 登录pod 监控应用

- 创建服务

- 监控服务等k8s资源


# 检查集群状态


## 启动minikube

- 注意MINIKUBE_HOME决定了.minikube目录的位置

- 即minikube所占用的磁盘等资源的位置

- 设置MINIKUBE_HOME=E:\minikube

`$env:MINIKUBE_HOME="E:\minikube"`

- 执行 minikube.exe start


### Q&A

- Q: 报c:/users ... 下文件已存在

- A: 环境变量没生效, 没有在E盘下创建

  - 使用windows的环境变量设置语句

  - 设置 如上

  - 校验 直接执行 `$env:MINIKUBE_HOME`

  - 结果 `E:\minikube` 表示成功


## 校验minikube 和 k8s 状态

- `.\minikube.exe version` 查看minikube的版本

- `.\minikube.exe kubectl version` 查看kubectl版本

  - 可以看到两个版本号, 即Client Version 和 Server Version

  - 表示k8s客户端和服务端都已经正常运行

- `.\minikube.exe kubectl cluster-info` 查看k8s集群状态

  - 有两项数据 Kubernetes control plan 和 CoreDNS

- `.\minikube.exe kubectl get nodes` 获取所有nodes的信息


# 部署应用


## 创建部署

- `kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1`

  - gcr.azk8s.cn/google-samples/kubernetes-bootcamp

  ```

  gcr.io/namespace/image_name:image_tag

  # 等价于

  anjia0532/namespace.image_name:image_tag

  k8s.gcr.io/{image}/{tag} <==> gcr.io/google-containers/{image}/{tag} <==> anjia0532/google-containers.{image}/{tag}

  create deployment kubernetes-bootcamp --image=anjia0532/google-samples.kubernetes-bootcamp:v1

  ```

  - create = 动作

  - deployment = 资源类型

  - kubernetes-bootcamp = 资源名 (任意)

  - `--xxx` 后面的部分是参数细节

- 安装kubectl

  - minikube start成功后, 会创建~/.kube/config 指示kubectl客户端如何连接到k8s集群

  - minikube还操控hyper-v打通了网络 可以ping k8s集群的内部ip了

- 使用kubectl proxy 打通restful管理服务api(以下简称api)

  `kubectl proxy`

- 通过api查看k8s服务信息

  `http://localhost:8001/version`

- 查看pod名字

  `kubectl get pods`

- 通过api查看pod信息

  `http://localhost:8001/api/v1/namespaces/default/pods/kubernetes-bootcamp-57978f5f5d-k58bg`

  - 看看有价值的信息有哪些

  - 主要都是管理信息 涉及pod image规范

  - namespace是default 有啥用?

- 删除deployment (可选 后续文档基于没有执行删除的情况)

  - `delete deployment kubernetes-bootcamp`

  - 还是4部分: 操作, 资源类型, 资源名, 细节参数

  - 这次没有细节参数


### Q&A

- Q: 使用`.\minikube.exe kubectl xxx --xx`的命令格式

  `--xx` 被识别为minikube.exe的参数 而不是kubectl的参数

- A: 虚拟机外, 本地环境安装kubectl

  https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/

- Q: get deployment READY一直是0/1

- A: 通过 get pods 看到 STATUS 是 ImagePullBackOff

  尝试直接下载 gcr.io/google-samples/kubernetes-bootcamp

  发现使用的是 google cloud 由于某种原因网络不通

  先删除deployment 之后找个网络能通的镜像源代替

  - 参考 https://cloud.tencent.com/developer/article/1353088

  - 镜像地址替换为 anjia0532/google-samples.kubernetes-bootcamp:v1


# 登录pod

- TODO


学习日志21-12-14 K8s入门 - 无状态服务的评论 (共 条)

分享到微博请遵守国家法律