例如,部署yaml文件:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: guestbook
spec:
replicas: 2
template:
metadata:
labels:
app: guestbook
spec:
container:
- name: guestbook
image: {{Here want to read value from config file outside}}
Run Code Online (Sandbox Code Playgroud)
ConfigMapKubernetes 有一个功能,但它也将键/值写入yaml文件.有没有办法设置环境变量的关键?
包括:
如果有replicationcontroller,当删除一些部署时,它们将重新生成.有没有办法让kubenetes回到初始化状态?
使用helminstall可以在安装图表时设置值,如:
helm install --set favoriteDrink=slurm ./mychart
Run Code Online (Sandbox Code Playgroud)
现在想要设置如下值:
helm install --set aws.subnets="subnet-123456, subnet-654321" ./mychart
Run Code Online (Sandbox Code Playgroud)
但失败了:
Error: failed parsing --set data: key " subnet-654321" has no value
Run Code Online (Sandbox Code Playgroud)
似乎helm的--set认识逗号,,并检查下一个字符串作为重点.所以在这种情况下设置这样的字符串时不能使用?
helm install charts/mychart \
--set aws.subnets={subnet-123456,subnet-654321}
Run Code Online (Sandbox Code Playgroud)
得到错误:
Error: This command needs 1 argument: chart name
Run Code Online (Sandbox Code Playgroud)
helm install charts/mychart \
--set aws.subnets="subnet-123456\,subnet-654321"
Run Code Online (Sandbox Code Playgroud)
string shell command-line-interface kubernetes kubernetes-helm
使用Helm已安装Prometheus并Grafana在 kubernetes 集群中:
helm install stable/prometheus
helm install stable/grafana
Run Code Online (Sandbox Code Playgroud)
它有一个alertmanage服务。
但是我看到一篇博客介绍了如何使用 yaml 文件设置 alertmanager 配置:
是否可以使用当前方式(由 helm 安装)来设置 somealert rules和 config for CPU,memory并在不创建其他 yaml 文件的情况下发送电子邮件?
我看到了一个K8S介绍configmap到alertmanager:
https://github.com/kubernetes/charts/tree/master/stable/prometheus#configmap-files
但是不清楚怎么用,怎么做。
我下载了的源代码stable/prometheus来看看它的作用。从values.yaml我发现的文件中:
serverFiles:
alerts: ""
rules: ""
prometheus.yml: |-
rule_files:
- /etc/config/rules
- /etc/config/alerts
scrape_configs:
- job_name: prometheus
static_configs:
- targets:
- localhost:9090
Run Code Online (Sandbox Code Playgroud)
https://github.com/kubernetes/charts/blob/master/stable/prometheus/values.yaml#L600
所以我认为应该自己写这个配置文件来定义警报rules和alertmanager这里。但不要清楚这个块:
rule_files: …Run Code Online (Sandbox Code Playgroud) 使用helm安装Prometheus并Grafana在minikube当地。
$ helm install stable/prometheus
$ helm install stable/grafana
Run Code Online (Sandbox Code Playgroud)
设置端口转发后,Prometheus服务器,alertmanager grafana可以运行:
$ export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=server" -o jsonpath="{.items[0].metadata.name}")
$ kubectl --namespace default port-forward $POD_NAME 9090
$ export POD_NAME=$(kubectl get pods --namespace default -l "app=prometheus,component=alertmanager" -o jsonpath="{.items[0].metadata.name}")
$ kubectl --namespace default port-forward $POD_NAME 9093
$ export POD_NAME=$(kubectl get pods --namespace default -l "app=excited-crocodile-grafana,component=grafana" -o jsonpath="{.items[0].metadata.name}")
$ kubectl --namespace default port-forward $POD_NAME 3000
Run Code Online (Sandbox Code Playgroud)
从grafana添加数据源,出现HTTP Error Bad Gateway错误:
从以下位置导入仪表板315: …
对于大型在线应用程序,请使用k8s来运行它。规模可能是每日活动用户500,000。
k8中的应用程序需要消息传递功能-Pub / Sub,有以下选项:
它需要zookeeper,并且能否在os上运行取决于磁盘I / O。那么,如果将其安装到k8s集群中,怎么办?性能会变差吗?
而且,如果将Kafka保留在k8s集群之外,请从k8s集群内部的应用程序连接Kafka,那么性能如何?他们在不同的层,会不会很慢?
它比Kafka慢,但是对于每天有50万应用程序的用户来说,它足够好吗?如果是这样,也许这是一个不错的选择。
这是另一种选择。也许是最简单的一种。但是从互联网上我知道它有时会丢失信息。如果为真,那就太糟糕了。
因此,最重要的是,在k8s上使用Kafka(也与zookeeper一起使用),在此使用案例中是好还是不好?
我创建了一个无头服务:
apiVersion: v1
kind: Service
metadata:
name: myapp-service-headless
spec:
ports:
- port: 80
selector:
app: myapp
clusterIP: None
Run Code Online (Sandbox Code Playgroud)
从 Kubernetes 仪表板我可以看到它Internal endpoints:
myapp-service-headless:80 TCP
myapp-service-headless:0 TCP
Run Code Online (Sandbox Code Playgroud)
在此应用程序中,我还将内部端点设置为:
http://myapp-service-headless
Run Code Online (Sandbox Code Playgroud)
但是从外部如何访问其IP来连接API呢?
比如我的Kubernetes的IP是192.168.99.100,那么连接192.168.99.100可以吗?
在 Vagrant 中安装了 Rancher 服务器和 2 个 Rancher 代理。然后从 Rancher 服务器切换到 K8S 环境。
在牧场主服务器主机,安装kubectl和helm。然后安装Prometheus的Helm:
helm install stable/prometheus
Run Code Online (Sandbox Code Playgroud)
现在从 Kubernetes 仪表板检查状态,有 2 个待处理的 pod:

它注意到了PersistentVolumeClaim is not bound,Rancher 服务器不是默认安装了 K8S 组件吗?
> kubectl get pvc
NAME STATUS VOLUME CAPACITY
ACCESSMODES STORAGECLASS AGE
voting-prawn-prometheus-alertmanager Pending 6h
voting-prawn-prometheus-server Pending 6h
> kubectl get pv
No resources found.
Run Code Online (Sandbox Code Playgroud)
$ kubectl describe pvc voting-prawn-prometheus-alertmanager
Name: voting-prawn-prometheus-alertmanager
Namespace: default
StorageClass:
Status: Pending …Run Code Online (Sandbox Code Playgroud) 例如,设置alertmanager.ingress.annotations为添加两个项目,这两个方法都不起作用:
$ helm install stable/prometheus \
--set alertmanager.ingress.enabled=true \
--set "alertmanager.ingress.annotations={alb.ingress.kubernetes.io/scheme: internet-facing, alb.ingress.kubernetes.io/tags: Environment=dev,Team=test}"
Error: YAML parse error on prometheus/templates/alertmanager-ingress.yaml: error unmarshaling JSON: json: cannot unmarshal array into Go struct field .annotations of type map[string]string
$ helm install stable/prometheus \
--set alertmanager.ingress.enabled=true \
--set "alertmanager.ingress.annotations={'alb.ingress.kubernetes.io/scheme': 'internet-facing', 'alb.ingress.kubernetes.io/tags': 'Environment=dev,Team=test'}"
Error: YAML parse error on prometheus/templates/alertmanager-ingress.yaml: error unmarshaling JSON: json: cannot unmarshal array into Go struct field .annotations of type map[string]string
Run Code Online (Sandbox Code Playgroud)
那怎么用呢?
我想从外部设置 docker 映像存储库和标记值--set。在我的部署清单 yaml 文件中,我写道:
image: "{{ .Values.image.awesomeapp.repository }}:{{ .Values.image.awesomeapp.tag | quote }}"\nRun Code Online (Sandbox Code Playgroud)\n\n并Helm这样运行:
helm install charts/awesomeapp \\\n --set image.awesomeapp.repository=1234567890.dkr.ecr.ap-northeast-1.amazonaws.com/awesomeapp \\\n --set image.awesomeapp.tag=20180131010101\nRun Code Online (Sandbox Code Playgroud)\n\n但失败了:
\n\nFailed to apply default image tag "1234567890.dkr.ecr.ap-northeast-1.amazonaws.com/awesomeapp:\\"2.01801310101013e+13\\"": couldn\'t parse image reference "1234567890.dkr.ecr.ap-northeast-1.amazonaws.com/orange-battle:\\"2.01801310101013e+13\\"": invalid reference format\nRun Code Online (Sandbox Code Playgroud)\n\n为什么\xe2\x80\x99不能正确暂停图像标签?
\nkubernetes ×8
prometheus ×4
grafana ×2
monitoring ×2
yaml ×2
alert ×1
apache-kafka ×1
config ×1
docker ×1
endpoint ×1
image ×1
internals ×1
ip ×1
json ×1
key-value ×1
minikube ×1
rabbitmq ×1
rancher ×1
redis ×1
repository ×1
shell ×1
string ×1
tags ×1
templates ×1
vagrant ×1