前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kuberentes 1.20.5搭建eck

Kuberentes 1.20.5搭建eck

原创
作者头像
对你无可奈何
修改2021-03-28 10:51:30
1.1K0
修改2021-03-28 10:51:30
举报
文章被收录于专栏:运维专栏运维专栏

前言:

CVM

CDN

/act?from=10680

/act/season?from=14065

/?from=10680

(照旧加几个腾讯云连接)

TKE

CBS

kubernetes1.16版本的时候安装了elastic on kubernetes(ECK)1.0版本。存储用了local disk文档跑了一年多了。elasticsearch对应版本是7.6.2。现在已完成了kubernetes 1.20.5 containerd cilium hubble 环境的搭建(https://blog.csdn.net/saynaihe/article/details/115187298)并且集成了cbs腾讯云块存储(https://blog.csdn.net/saynaihe/article/details/115212770)。eck也更新到了1.5版本(我能说我前天安装的时候还是1.4.0吗.....还好我只是简单应用没有太复杂的变化无非版本变了....那就再来一遍吧)

最早部署的kubernetes1.16版本的eck安装方式https://duiniwukenaihe.github.io/2019/10/21/k8s-efk/多年前搭建的eck1.0版本。

关于eck

elastic cloud on kubernetes是一种operator的安装方式,很大程度上简化了应用的部署。同样的还有promtheus-operator。

可参照https://www.elastic.co/guide/en/cloud-on-k8s/current/k8s-deploy-eck.html官方文档的部署方式。

1. 在kubernete集群中部署ECK

1. 安装自定义资源定义和操作员及其RBAC规则:

kubectl apply -f https://download.elastic.co/downloads/eck/1.5.0/all-in-one.yaml

2. 监视操作日志:

kubectl -n elastic-system logs -f statefulset.apps/elastic-operator

**

-----------------------分隔符-----------------

我是直接把yaml下载到本地了。

代码语言:txt
复制
###至于all-in-one.yaml.1后面的1可以忽略了哈哈,第二次加载文件加后缀了。
kubectl apply -f all-in-one.yaml
kubectl -n elastic-system logs -f statefulset.apps/elastic-operator
image.png
image.png

2. 部署elasticsearch集群

1. 定制化elasticsearch 镜像

增加s3插件,修改时区东八区,并添加腾讯云cos的秘钥,并重新打包elasticsearch镜像.

1. DockerFile如下
代码语言:txt
复制
FROM docker.elastic.co/elasticsearch/elasticsearch:7.12.0
ARG ACCESS_KEY=XXXXXXXXX
ARG SECRET_KEY=XXXXXXX
ARG ENDPOINT=cos.ap-shanghai.myqcloud.com
ARG ES_VERSION=7.12.0

ARG PACKAGES="net-tools lsof"
ENV allow_insecure_settings 'true'
RUN rm -rf /etc/localtime && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

RUN echo 'Asia/Shanghai' > /etc/timezone
RUN  if [ -n "${PACKAGES}" ]; then  yum install -y $PACKAGES && yum clean all && rm -rf /var/cache/yum; fi
RUN \
     /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch repository-s3 && \
    /usr/share/elasticsearch/bin/elasticsearch-keystore create && \
	echo "XXXXXX"  | /usr/share/elasticsearch/bin/elasticsearch-keystore add --stdin s3.client.default.access_key  && \
	echo "XXXXXX"  | /usr/share/elasticsearch/bin/elasticsearch-keystore add --stdin s3.client.default.secret_key
2. 打包镜像并上传到腾讯云镜像仓库,也可以是其他私有仓库
代码语言:txt
复制
 docker build -t ccr.ccs.tencentyun.com/xxxx/elasticsearch:7.12.0 .
 docker push  ccr.ccs.tencentyun.com/xxxx/elasticsearch:7.12.0
image.png
image.png

2. 创建elasticsearch部署yaml文件,部署elasticsearch集群

修改了自己打包 image tag ,使用了腾讯云cbs csi块存储。并定义了部署的namespace,创建了namespace logging.

1. 创建部署elasticsearch应用的命名空间

代码语言:txt
复制
kubectl create ns logging
代码语言:txt
复制
cat <<EOF > elastic.yaml
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: elastic
  namespace: logging
spec:
  version: 7.12.0
  image: ccr.ccs.tencentyun.com/XXXX/elasticsearch:7.12.0
  http:
    tls:
      selfSignedCertificate:
        disabled: true
  nodeSets:
  - name: laya
    count: 3
    podTemplate:
      spec:
        containers:
        - name: elasticsearch
          env:
          - name: ES_JAVA_OPTS
            value: -Xms2g -Xmx2g
          resources:
            requests:
              memory: 4Gi
              cpu: 0.5
            limits:
              memory: 4Gi
              cpu: 2
    config:
      node.master: true
      node.data: true
      node.ingest: true
      node.store.allow_mmap: false
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        accessModes:
        - ReadWriteOnce
        storageClassName: cbs-csi 
        resources:
          requests:
            storage: 200Gi
EOF          
image.png
image.png

2. 部署yaml文件并查看应用部署状态

代码语言:txt
复制
kubectl apply -f elastic.yaml
kubectl get elasticsearch -n logging
kubectl get elasticsearch -n logging
kubectl -n logging get pods --selector='elasticsearch.k8s.elastic.co/cluster-name=elastic'
image.png
image.png

3. 获取elasticsearch凭据

代码语言:txt
复制
kubectl -n logging get secret elastic-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode; echo
image.png
image.png

4. 直接安装kibana了

修改了时区,和elasticsearch镜像一样都修改到了东八区,并将语言设置成了中文,关于selfSignedCertificate原因参照https://www.elastic.co/guide/en/cloud-on-k8s/1.4/k8s-kibana-http-configuration.html

代码语言:txt
复制
cat <<EOF > kibana.yaml
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: elastic
  namespace: logging
spec:
  version: 7.12.0
  image: docker.elastic.co/kibana/kibana:7.12.0
  count: 1
  elasticsearchref:
    name: elastic
  http:
    tls:
      selfSignedCertificate:
        disabled: true
  podTemplate:
    spec:
      containers:
      - name: kibana
        env:
        - name: I18N_LOCALE
          value: zh-CN
        resources:
          requests:
            memory: 1Gi
          limits:
            memory: 2Gi
        volumeMounts:
        - name: timezone-volume
          mountPath: /etc/localtime
          readOnly: true
      volumes:
      - name: timezone-volume
        hostPath:
          path: /usr/share/zoneinfo/Asia/Shanghai
EOF          
代码语言:txt
复制
kubectl apply kibana.yaml

5. 对外映射kibana 服务

对外暴露都是用traefik https 代理,命名空间添加tls secret。绑定内部kibana service.然后外部slb udp代理443端口。但是现在腾讯云slb可以挂载多个证书了,就把这层剥离了,直接http方式到80端口 。然后https 证书 都在slb负载均衡代理了。这样省心了证书的管理,还有一点是可以在slb层直接收集接入层日志到cos。并可使用腾讯云自有的日志服务。

代码语言:txt
复制
cat <<EOF > ingress.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: kibana-kb-http
  namespace: logging
spec:
  entryPoints:
    - web
  routes:
    - match: Host(`kibana.XXXXX.com`)
      kind: Rule
      services:
        - name: elastic-kb-http
          port: 5601
EOF          
kubectl apply -f ingress.yaml

输入 用户名elastic 密码为上面获取的elasticsearch的凭据,进入管理页面。新界面很是酷炫

image.png
image.png

6. now 要添加快照仓库了

image.png
image.png

创建快照仓库跟S3方式是一样的,具体的可以参考https://blog.csdn.net/ypc123ypc/article/details/87860583这篇博文

代码语言:txt
复制
PUT _snapshot/esbackup
{
  "type": "s3",
  "settings": {
    "endpoint":"cos.ap-shanghai.myqcloud.com",
    "region": "ap-shanghai",
    "compress" : "true",
    "bucket": "elastic-XXXXXXX"
  }
}
image.png
image.png

OK 进行验证快照仓库是否添加成功

image.png
image.png
image.png
image.png

还原一个试试?

image.png
image.png
image.png
image.png
image.png
image.png

可还行?等待变绿

image.png
image.png

基本完成。正常可以使用了。使用过程中还有很多注意的。关键还是集群的设计规划。数据的预估增长还有报警。下次有时间列一下Elastalert在kubernetes中的部署应用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
    • 关于eck
    • 1. 在kubernete集群中部署ECK
      • 1. 安装自定义资源定义和操作员及其RBAC规则:
        • 2. 监视操作日志:
        • 2. 部署elasticsearch集群
          • 1. 定制化elasticsearch 镜像
            • 2. 创建elasticsearch部署yaml文件,部署elasticsearch集群
              • 1. 创建部署elasticsearch应用的命名空间
              • 2. 部署yaml文件并查看应用部署状态
            • 3. 获取elasticsearch凭据
              • 4. 直接安装kibana了
                • 5. 对外映射kibana 服务
                  • 6. now 要添加快照仓库了
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                  http://www.vxiaotou.com