K8s----Helm包管理工具
- 1 Helm 部署
- 2 Helm 部署redis应用
- 3 Helm部署metrics-server
1 Helm 部署
(1)下载helm软件包
- 官网:https://helm.sh/docs/intro/quickstart/
(2)补齐helm命名
echo "source <(helm completion bash)" >> ~/.bashrc
source ~/.bashrc
(3)搜索官方helm hub chart库:helm search hub redis-ha
(4)Helm 添加第三方 Chart 库
helm repo add dandydev https://dandydeveloper.github.io/charts
- 列出chart库:
helm repo list
2 Helm 部署redis应用
(1)搜索redis-ha:helm search repo redis-ha
(2)拉取应用到本地:helm pull dandydev/redis-ha
- 解压压缩包:
tar zxf redis-ha-4.12.9.tgz
(3)进入redis-ha应用的目录:cd redis-ha/
- 编辑yaml文件:
vim values
- 将部署应用所需的镜像提前下载到私有仓库
- 由于只有两个子节点,而values文件中设置的副本数量为3,故将反亲和性改为false
- 查看命名空间:
kubectl get ns
(2)安装redis-ha应用:helm install redis-ha .
- 查看pod的信息:
kubectl get pod
,创建了三个副本,每个pod中yunxing2个容器
- 查看pv的信息:
kubectl get pv
- 查看服务的信息:
kubectl get svc
2 测试
(1)进入名为redis-ha-server-1的pod的命名行:
kubectl exec -it redis-ha-server-0 sh -n default
- 连接本地的 redis 服务:
redis-cli
,info查看redis服务的信息,redis的master在redis-ha-server-0上,有两个副本
- 在master上将字符串值 name关联到 tom
- 连接副本的 redis 服务(slave的ip可在master通过info端查看),在master备份的数据被备份到slave
- 连接副本的 redis 服务(slave的ip可在master通过info端查看)
(2)删除master的pod
kubectl delete pod redis-ha-server-0
kubectl get pod
- 此时运行master的pod被删除,redis将在slave中重新选择master
- 连接redis-ha-server-1本地的 redis 服务:
redis-cli
,info查看redis服务的信息,redis的master切换到redis-ha-server-1上,由于被删除的pod还未重启成功,此时master有1个slave
kubectl exec -it redis-ha-server-1 sh -n default
- 连接redis-ha-server-2本地的 redis 服务:
redis-cli
,info查看redis服务的信息,该redis为slave
(2) redis-ha-server-0恢复后
- 查看pod信息:
kubectl get pod -o wide
- 进入名为redis-ha-server-2的pod的命名行:
kubectl exec -it redis-ha-server-2 sh -n default
- redis的master仍在此pod,且此时redis-ha-server-0是redis-ha-server-2的slave
- 进入名为redis-ha-server-1的pod的命名行:redis-ha-server-1运行的redis为slave
kubectl exec -it redis-ha-server-1 sh -n default
- 进入名为redis-ha-server-1的pod的命名行:redis-ha-server-1运行的redis为slave
kubectl exec -it redis-ha-server-0 sh -n default
3 Helm部署metrics-server
(1)创建命名空间:kubectl create namespace metrics-server
(2)拉取metrics-server:helm pull bitnami/metrics-server
- 编辑文件:
vim metrics-server/values.yaml
(3)部署metrics-server:helm install metrics-server . -n metrics-server
(4)查看metrics-server命名空间的信息:
kubectl get all -n metrics-server
- 查看pod的信息,pod未成功运行:存活探针失败
kubectl get pod -n metrics-serve
kubectl -n metrics-server describe metrics-server-777f7bd69b-h7pp5
- 查看pod的日志信息:
kubectl -n metrics-server logs metrics-server-777f7bd69b-h7pp5
报错:dial tcp: lookup server3 on 10.96.0.10:53: no such host, unable to fully scrape metrics from node server2: unable to fetch metrics from node server2: Get “https://server2:10250/stats/summary?only_cpu_and_memory=true”: dial tcp: lookup server2 on 10.96.0.10:53: no such host, unable to fully scrape metrics from node server4: unable to fetch metrics from node server4: Get “https://server4:10250/stats/summary?only_cpu_and_memory=true”: dial tcp: lookup server4 on 10.96.0.10:53: no such host]
错误的原因:这是因为没有内网的DNS服务器,所以metrics-server无法解析节点名字。可以直接修改coredns的configmap,讲各个节点的主机名加入到hosts中,这样所有Pod都可以从CoreDNS中解析各个节点的名字
解决方法
- 修改coredns的configmap:
kubectl edit configmaps coredns -n kube-system
- 重载coredns
kubectl -n kube-system delete pod coredns-7f89b7bc75-h6kcl
kubectl -n kube-system delete pod coredns-7f89b7bc75-tdtjt
kubectl -n metrics-server get all
- 查看metrics-server命名空间的信息:
kubectl -n metrics-server get all
,pod启动成功
(5)测试:kubectl top node
,查看节点的资源使用信息