赞
踩
大家好,我是博哥爱运维。
Kubernetes Operator 是一种用于扩展 Kubernetes 功能的软件。它的主要功能包括:
总的来说,Kubernetes Operator 的核心思想是通过程序化和自动化的方式来管理和扩展 Kubernetes 集群。它极大地简化了在 Kubernetes 上安装和运行复杂应用的过程。
Operator 的工作原理基于 Kubernetes 的控制器模式。它会不断地监测 Kubernetes 集群的状态,一旦发现自定义资源(CR)的实际状态与预期状态不符,Operator 就会执行相应的操作以使其达到预期状态。这种模式使得 Operator 可以实现自我修复和自动恢复的功能。
常见的 Kubernetes Operator 包括 Rook 提供存储解决方案的 Operator,Prometheus Operator 用于监控集群的 Operator,Istio Operator 用于服务网格的 Operator 等。这些 Operator 为 Kubernetes 生态带来了很大的便利。
kubectl create -f https://download.elastic.co/downloads/eck/2.10.0/crds.yaml
kubectl apply -f https://download.elastic.co/downloads/eck/2.10.0/operator.yaml
kubectl -n elastic-system get pod
kubectl -n elastic-system logs -f statefulset.apps/elastic-operator
kubectl create ns es
# 测试的话记得把下面相关参数值调低 cat <<EOF | kubectl apply -f - apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: name: quickstart namespace: es spec: version: 8.11.3 nodeSets: - name: default count: 1 config: node.store.allow_mmap: false podTemplate: spec: containers: - name: elasticsearch env: - name: ES_JAVA_OPTS value: -Xms1g -Xmx1g resources: requests: memory: 2Gi cpu: 0.5 limits: memory: 2Gi cpu: 0.5 initContainers: - name: sysctl securityContext: privileged: true command: ['sh', '-c', 'sysctl -w vm.max_map_count=262144'] volumeClaimTemplates: - metadata: name: elasticsearch-data spec: accessModes: - ReadWriteOnce resources: requests: storage: 50Gi storageClassName: nfs-boge http: tls: selfSignedCertificate: disabled: true EOF
PASSWORD=$(kubectl -n es get secret quickstart-es-elastic-user -o go-template='{{.data.elastic | base64decode}}') curl -u "elastic:$PASSWORD" http://$(kubectl -n es get svc|grep es-http|awk '{print $3}'):9200 echo "elastic:$PASSWORD" # 检查ES创建结果(可以通过edit来修改、用delete来删除) kubectl -n es get es quickstar NAME HEALTH NODES VERSION PHASE AGE quickstart green 1 8.11.3 Ready 8m5s # 查看索引列表 curl -s --basic -u "elastic:$PASSWORD" http://$(kubectl -n es get svc|grep es-http|awk '{print $3}'):9200/_cat/indices?v # 查看具体索引数据 curl -s --basic -u "elastic:$PASSWORD" http://$(kubectl -n es get svc|grep es-http|awk '{print $3}'):9200/test-es-2021-02-02/_search?pretty # 删除具体索引数据 curl -s --basic -u "elastic:$PASSWORD" -XDELETE http://$(kubectl -n es get svc|grep es-http|awk '{print $3}'):9200/test-es-2021-02-02
cat <<EOF | kubectl apply -f - apiVersion: kibana.k8s.elastic.co/v1 kind: Kibana metadata: name: quickstart namespace: es spec: version: 8.11.3 count: 1 elasticsearchRef: name: quickstart http: tls: selfSignedCertificate: disabled: true EOF
# 这里我先自签一个https的证书 #1. 先生成私钥key # openssl genrsa -out boge.key 2048 Generating RSA private key, 2048 bit long modulus ..............................................................................................+++ .....+++ e is 65537 (0x10001) #2.再基于key生成tls证书(注意:这里我用的*.boge.com,这是生成泛域名的证书,后面所有新增加的三级域名都是可以用这个证书的) # openssl req -new -x509 -key boge.key -out boge.csr -days 360 -subj /CN=*.boge.com # 看下创建结果 # ll total 8 -rw-r--r-- 1 root root 1099 Nov 27 11:44 boge.csr -rw-r--r-- 1 root root 1679 Nov 27 11:43 boge.key #3. 创建k8s上的tls secret kubectl -n es create secret tls boge-com-tls --key boge.key --cert boge.csr
cat <<EOF | kubectl apply -f - apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: kibana namespace: es annotations: nginx.ingress.kubernetes.io/force-ssl-redirect: "true" kubernetes.io/ingress.class: nginx spec: tls: - hosts: - kibana.boge.com secretName: boge-com-tls rules: - host: kibana.boge.com http: paths: - path: / pathType: Prefix backend: service: name: quickstart-kb-http port: number: 5601 EOF
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。