乐趣区

关于kubernetes:Kuberentes-1205搭建eck

前言:

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/d…

2. 监督操作日志:

kubectl -n elastic-system logs -f statefulset.apps/elastic-operator
**
———————– 分隔符 —————–
我是间接把 yaml 下载到本地了。

### 至于 all-in-one.yaml.1 前面的 1 能够疏忽了哈哈,第二次加载文件加后缀了。kubectl apply -f all-in-one.yaml
kubectl -n elastic-system logs -f statefulset.apps/elastic-operator

2. 部署 elasticsearch 集群

1. 定制化 elasticsearch 镜像

减少 s3 插件,批改时区东八区,并增加腾讯云 cos 的秘钥,并从新打包 elasticsearch 镜像.

1. DockerFile 如下

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. 打包镜像并上传到腾讯云镜像仓库,也能够是其余公有仓库

 docker build -t ccr.ccs.tencentyun.com/xxxx/elasticsearch:7.12.0 .
 docker push  ccr.ccs.tencentyun.com/xxxx/elasticsearch:7.12.0

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

批改了本人打包 image tag,应用了腾讯云 cbs csi 块存储。并定义了部署的 namespace,创立了 namespace logging.

1. 创立部署 elasticsearch 利用的命名空间

kubectl create ns logging
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          

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

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'

3. 获取 elasticsearch 凭据

kubectl -n logging get secret elastic-es-elastic-user -o=jsonpath='{.data.elastic}' | base64 --decode; echo

4. 间接装置 kibana 了

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

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          
kubectl apply kibana.yaml

5. 对外映射 kibana 服务

对外裸露都是用 traefik https 代理,命名空间增加 tls secret。绑定外部 kibana service. 而后内部 slb udp 代理 443 端口。然而当初腾讯云 slb 能够挂载多个证书了,就把这层剥离了,间接 http 形式到 80 端口。而后 https 证书 都在 slb 负载平衡代理了。这样省心了证书的治理,还有一点是能够在 slb 层间接收集接入层日志到 cos。并可应用腾讯云自有的日志服务。

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 的凭据,进入治理页面。新界面很是酷炫

6. now 要增加快照仓库了


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

PUT _snapshot/esbackup
{
  "type": "s3",
  "settings": {
    "endpoint":"cos.ap-shanghai.myqcloud.com",
    "region": "ap-shanghai",
    "compress" : "true",
    "bucket": "elastic-XXXXXXX"
  }
}


OK 进行验证快照仓库是否增加胜利


还原一个试试?



可还行?期待变绿

根本实现。失常能够应用了。应用过程中还有很多留神的。要害还是集群的设计规划。数据的预估增长还有报警。下次有工夫列一下 Elastalert 在 kubernetes 中的部署利用。

退出移动版