1 Helm 部署

(1)下载helm软件包

在这里插入图片描述

(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,查看节点的资源使用信息
在这里插入图片描述

Logo

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

更多推荐