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

学习日志 211221 部署sts

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

# 211221

# 删除sts(statefulset)

- `kubectl delete sts web`

- `kubectl delete svc nginx`

- 之后检查pv和pvc都还在

  - pvc的状态还是bound

- `kubectl delete pvc www-web-0 www-web-1`

  - 再检查 pvc 和 pv 都没了

  - 之前pv是动态创建的


# 部署wordpress和mysql

- Example: Deploying WordPress and MySQL with Persistent Volumes

- 下载两个现成的k8s描述文件

  - mysql

  - wordpress

- 编写一个kustomization.yaml

- 新增secret的部分

- 用resources引入两个刚下载的k8s描述文件

- 用 apply -k 应用整个目录

- 创建了7项资源

  - secret

  - 两个service

  - 两个pvc

  - 两个deployment

- 挨个检查上述创建出来的

- 检查secret

  - `kubectl get secrets`

  - 有两项结果

  - default-token这个无关 干什么用的?

  - mysql-pass-<id>是我们刚建的

- 检查pvc

  - `kubectl get pvc`

- 检查pods

  - 略

- 检查services

  - 其中wordpress-mysql的类型是ClusterIP

    - 只有一个内部端口 3306

    - 我们之前做微服务互调, 被调用者其实是不需要外部端口

    - 因为我们的调用者走的是servicename:内部端口 的格式发起调用

    - 所以我们之前的被调用者其实也应该使用ClusterIP类型的service

    - 而不是NodePort

  - wordpress自己的服务类型是LoadBalancer

    - 但是minikube不支持外部loadbalancer, 所以这个类型退化为nodeport

    - 有一个外部端口供我们访问

- 结果 访问wordpress

  - 按nodeport的方式访问wordpress服务

  - 类似 http://192.168.2.15:31112/

- 继续测试

  - 持久化?

    - 在wordpress里设置语言 用户等信息

    - minikube 保存/ 重启动

    - 检查wordpress是否 保有之前的信息

    - 结果 有保留

- 清理

  - `kubectl delete -k ./sts2/`

  - 删目录, 首先根据目录下的kustomization.yaml

    - 这个文件在该目录下应该是唯一的?

    - k8s 1.14 后支持这种格式

  - 结果 删除了7个资源 同上

  - 检查pvc有没有被删除

  - 这次pvc是删了的

    - 因为这次pvc是在描述文件里显式声明创建的

    - 所以删描述文件意味着pvc也要被删掉

- 和我们目标有差距

  - 我们希望做一个mysql多机集群的示例

    - 即水平sharding - 分库分表(其实可以不需要分表 分库就行)

    - 分表的意思是把存储分了, 这次每个表对应的数据量和索引大小有限

    - 分表不分cpu和内存资源

    - 分库的话就还要分掉cpu和内存资源

    - 现在用pod虚拟机, 本来就支持小粒度的分cpu和内存

    - 所以可以不用纠结只分表不分库的方案

  - 我们先跑完所有的示例 再研究怎么搞分库方案


# cassandra示例 只读

- minikube start 可以指定内存和占用cpu数量

  - `minikube start --memory 5120 --cpus=4`

- 为replicas大于1的情 使用volumeClaimTemplates 分配存储

- 用edit指令 可以打开一个编辑器

  - `kubectl edit statefulset cassandra`

  - 等价于改k8s描述文件 重新apply

- k8s描述文件可以设置环境变量

  - 这种方式可以定制化被部署出来的节点

  - 比如 mysql的 MYSQL_ROOT_PASSWORD 就是按这个方法做的

  - 环境变量是名值对, 值可以直接写value, 也可以用valueFrom从secret里面拿


# zookeeper示例 运行

- 概念 新增两个

  - PodDisruptionBudgets

  - PodAntiAffinity

- PodDisruptionBudgets

  - pod 损坏预防

  - 核心理解 预算(最低pods副本数) 和 drain 指令

  - drain指令 尝试 去除pods 但不会违反预算 如果违反会被卡住block

  - 直接有足够的node加回来

- Affinity and anti-affinity

  - 关注pod选node

  - 提供更丰富的语法

  - 可以是软性要求, 即尽量满足, 不满足也行

  - 细节 略


# 明天继续zookeeper示例 TODO


- 今天只有半天的内容 较短

学习日志 211221 部署sts的评论 (共 条)

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