学习日志 211221 部署sts
# 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
- 今天只有半天的内容 较短