在 GCE (kubernetes) 上设置环境变量
Setting Environment Variables on GCE (kubernetes)
很抱歉这个菜鸟问题来自 https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/getting-started-guides/logging-elasticsearch.md
它说:
To use Elasticsearch and Kibana for cluster logging you should set the
following environment variable as shown below:
KUBE_LOGGING_DESTINATION=elasticsearch
在哪里以及如何设置此 Env Var?我在想我应该使用
gcloud container clusters create
并在那里传递选项,但没有选项...
该文档适用于通过 GCE 的开源 shell 脚本启动集群的用户。 Google 容器引擎的集群创建命令目前不支持 Elasticsearch。您可以在创建集群后手动将其添加到您的集群中。
正如 Robert 的回答中已经提到的,如果集群应该在 Google 容器引擎 (GKE) 上 运行,则需要手动添加 Elasticsearch/Kibana 堆栈。使用此 post 中提供的信息,我能够通过执行以下步骤使其工作:
在没有云日志记录的情况下启动 GKE 集群
gcloud container --project <PROJECT_ID> clusters create <CLUSTER_ID> --no-enable-cloud-logging
使用 kubernetes DaemonSet 向每个 运行ning 节点添加一个已配置的 fluentd 容器。
kubectl create -f fluentd-es.yaml
fluentd-es.yaml
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
namespace: kube-system
labels:
app: fluentd-logging
spec:
template:
metadata:
labels:
app: fluentd-es
spec:
containers:
- name: fluentd-elasticsearch
image: gcr.io/google_containers/fluentd-elasticsearch:1.15
resources:
limits:
memory: 200Mi
requests:
cpu: 100m
memory: 200Mi
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
添加 elasticsearch 和 kibana pods 和服务。
kubectl create -f es-controller.yaml
kubectl create -f es-service.yaml
kubectl create -f kibana-controller.yaml
kubectl create -f kibana-service.yaml
请注意下面的 kubernetes.io/cluster-service: "true"
标签(现在
原来的 files) 已被删除。
在定义中使用此标签导致 运行ning pods.
终止
es-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: elasticsearch-logging-v1
namespace: kube-system
labels:
k8s-app: elasticsearch-logging
version: v1
spec:
replicas: 2
selector:
k8s-app: elasticsearch-logging
version: v1
template:
metadata:
labels:
k8s-app: elasticsearch-logging
version: v1
kubernetes.io/cluster-service: "true"
spec:
containers:
- image: gcr.io/google_containers/elasticsearch:1.8
name: elasticsearch-logging
resources:
limits:
cpu: 100m
requests:
cpu: 100m
ports:
- containerPort: 9200
name: db
protocol: TCP
- containerPort: 9300
name: transport
protocol: TCP
volumeMounts:
- name: es-persistent-storage
mountPath: /data
volumes:
- name: es-persistent-storage
emptyDir: {}
es-service.yaml
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-logging
namespace: kube-system
labels:
k8s-app: elasticsearch-logging
kubernetes.io/name: "Elasticsearch"
spec:
ports:
- port: 9200
protocol: TCP
targetPort: db
selector:
k8s-app: elasticsearch-logging
kibana-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: kibana-logging-v1
namespace: kube-system
labels:
k8s-app: kibana-logging
version: v1
spec:
replicas: 1
selector:
k8s-app: kibana-logging
version: v1
template:
metadata:
labels:
k8s-app: kibana-logging
version: v1
kubernetes.io/cluster-service: "true"
spec:
containers:
- name: kibana-logging
image: gcr.io/google_containers/kibana:1.3
resources:
limits:
cpu: 100m
requests:
cpu: 100m
env:
- name: "ELASTICSEARCH_URL"
value: "http://elasticsearch-logging:9200"
ports:
- containerPort: 5601
name: ui
protocol: TCP
kibana-service.yaml
apiVersion: v1
kind: Service
metadata:
name: kibana-logging
namespace: kube-system
labels:
k8s-app: kibana-logging
kubernetes.io/name: "Kibana"
spec:
ports:
- port: 5601
protocol: TCP
targetPort: ui
selector:
k8s-app: kibana-logging
创建一个 kubectl 代理
kubectl proxy
在
使用 kibana 查看您的日志
http://localhost:8001/api/v1/proxy/namespaces/kube-system/services/kibana-logging/
很抱歉这个菜鸟问题来自 https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/getting-started-guides/logging-elasticsearch.md 它说:
To use Elasticsearch and Kibana for cluster logging you should set the following environment variable as shown below:
KUBE_LOGGING_DESTINATION=elasticsearch
在哪里以及如何设置此 Env Var?我在想我应该使用
gcloud container clusters create
并在那里传递选项,但没有选项...
该文档适用于通过 GCE 的开源 shell 脚本启动集群的用户。 Google 容器引擎的集群创建命令目前不支持 Elasticsearch。您可以在创建集群后手动将其添加到您的集群中。
正如 Robert 的回答中已经提到的,如果集群应该在 Google 容器引擎 (GKE) 上 运行,则需要手动添加 Elasticsearch/Kibana 堆栈。使用此 post 中提供的信息,我能够通过执行以下步骤使其工作:
在没有云日志记录的情况下启动 GKE 集群
gcloud container --project <PROJECT_ID> clusters create <CLUSTER_ID> --no-enable-cloud-logging
使用 kubernetes DaemonSet 向每个 运行ning 节点添加一个已配置的 fluentd 容器。
kubectl create -f fluentd-es.yaml
fluentd-es.yaml
apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: fluentd-elasticsearch namespace: kube-system labels: app: fluentd-logging spec: template: metadata: labels: app: fluentd-es spec: containers: - name: fluentd-elasticsearch image: gcr.io/google_containers/fluentd-elasticsearch:1.15 resources: limits: memory: 200Mi requests: cpu: 100m memory: 200Mi volumeMounts: - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true volumes: - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers
添加 elasticsearch 和 kibana pods 和服务。
kubectl create -f es-controller.yaml kubectl create -f es-service.yaml kubectl create -f kibana-controller.yaml kubectl create -f kibana-service.yaml
请注意下面的
终止kubernetes.io/cluster-service: "true"
标签(现在 原来的 files) 已被删除。 在定义中使用此标签导致 运行ning pods.es-controller.yaml
apiVersion: v1 kind: ReplicationController metadata: name: elasticsearch-logging-v1 namespace: kube-system labels: k8s-app: elasticsearch-logging version: v1 spec: replicas: 2 selector: k8s-app: elasticsearch-logging version: v1 template: metadata: labels: k8s-app: elasticsearch-logging version: v1 kubernetes.io/cluster-service: "true" spec: containers: - image: gcr.io/google_containers/elasticsearch:1.8 name: elasticsearch-logging resources: limits: cpu: 100m requests: cpu: 100m ports: - containerPort: 9200 name: db protocol: TCP - containerPort: 9300 name: transport protocol: TCP volumeMounts: - name: es-persistent-storage mountPath: /data volumes: - name: es-persistent-storage emptyDir: {}
es-service.yaml
apiVersion: v1 kind: Service metadata: name: elasticsearch-logging namespace: kube-system labels: k8s-app: elasticsearch-logging kubernetes.io/name: "Elasticsearch" spec: ports: - port: 9200 protocol: TCP targetPort: db selector: k8s-app: elasticsearch-logging
kibana-controller.yaml
apiVersion: v1 kind: ReplicationController metadata: name: kibana-logging-v1 namespace: kube-system labels: k8s-app: kibana-logging version: v1 spec: replicas: 1 selector: k8s-app: kibana-logging version: v1 template: metadata: labels: k8s-app: kibana-logging version: v1 kubernetes.io/cluster-service: "true" spec: containers: - name: kibana-logging image: gcr.io/google_containers/kibana:1.3 resources: limits: cpu: 100m requests: cpu: 100m env: - name: "ELASTICSEARCH_URL" value: "http://elasticsearch-logging:9200" ports: - containerPort: 5601 name: ui protocol: TCP
kibana-service.yaml
apiVersion: v1 kind: Service metadata: name: kibana-logging namespace: kube-system labels: k8s-app: kibana-logging kubernetes.io/name: "Kibana" spec: ports: - port: 5601 protocol: TCP targetPort: ui selector: k8s-app: kibana-logging
创建一个 kubectl 代理
kubectl proxy
在
使用 kibana 查看您的日志http://localhost:8001/api/v1/proxy/namespaces/kube-system/services/kibana-logging/