标签: etcd3

尝试通过前缀删除所有键并重新放入时,在txn请求中给出重复键

尝试coreos/jetcd用于etcd从Java代码更新haproxy设置.

我想要实现的是:

  1. 删除单个主机的所有端点
  2. 为给定的主机添加更新的数据

我想通过前缀删除所有键,并将实际数据作为原子操作放入etcd中.

这就是我尝试使用etcd交易的原因.我的代码是:

Op.DeleteOp deleteOp = Op.delete(
        fromString(prefix),
        DeleteOption.newBuilder().withPrefix(fromString(prefix)).build()
);
Txn tx = kvClient.txn().Else(deleteOp);
newKvs.forEach((k,v) -> {
    tx.Else(Op.put(fromString(k), fromString(v), DEFAULT));
});
try {
    tx.commit().get();
} catch (InterruptedException | ExecutionException e) {
    log.error("ETCD transaction failed", e);
    throw new RuntimeException(e);
}
Run Code Online (Sandbox Code Playgroud)

使用ETCD v3 API(etcd v3.2.9).KVstore最初是空的,我想添加3条记录. prefix价值是:

/proxy-service/hosts/example.com
Run Code Online (Sandbox Code Playgroud)

并且kvs是一张地图:

"/proxy-service/hosts/example.com/FTP/0" -> "localhost:10021"
"/proxy-service/hosts/example.com/HTTPS/0" -> "localhost:10443"
"/proxy-service/hosts/example.com/HTTP/0" -> "localhost:10080"
Run Code Online (Sandbox Code Playgroud)

异常发生在commit().get()以下根本原因:

Caused by: io.grpc.StatusRuntimeException: INVALID_ARGUMENT: etcdserver: duplicate key given in txn request
    at …
Run Code Online (Sandbox Code Playgroud)

etcd etcd3

8
推荐指数
1
解决办法
373
查看次数

etcdctl引发错误:超出上下文截止日期错误

我正在尝试使用coreos cloud-config在AWS上创建一个单节点etcd集群。我创建了一个Route53记录集,其值etcd.uday.com具有指向ELB的别名,该别名指向ec2实例。Etcd运行成功,但是当我运行etcd成员列表命令时,出现以下错误

ETCDCTL_API=3 etcdctl member list \
--endpoints=https://etcd.udayvishwakarma.com:2379 \
--cacert=./ca.pem \
--cert=etcd-client.pem \
--key=etcd-client-key.pem

Error: context deadline exceeded
Run Code Online (Sandbox Code Playgroud)

但是,当将--insecure-skip-tls-verify标志添加到etcdctl member list命令时,它将列出成员。我已经cfssl使用以下配置生成了证书

ca.json

{
"CN": "Root CA",
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "UK",
      "L": "London",
      "O": "Kubernetes",
      "OU": "CA"
    }
  ],
  "ca": {
    "expiry": "87658h"
  }
}
Run Code Online (Sandbox Code Playgroud)

ca.config

 {
  "signing": {
    "default": {
      "expiry": "2190h"
    },
    "profiles": {
      "client": {
        "expiry": "8760h",
        "usages": [
          "signing",
          "key encipherment", …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services coreos etcd kubernetes etcd3

6
推荐指数
1
解决办法
2113
查看次数

如何使用etcd v3 restful api来观看

我正在尝试使用 etcdv3 restful api 观看密钥,遵循etcd/Documentation/dev-guide/api_grpc_gateway.md,但它似乎不适用于 watch。

 curl http://localhost:2379/v3beta/watch \
      -X POST -d '{"create_request": {"key":"Zm9v"} }'

 curl http://localhost:2379/v3beta/watch \
      -X POST -d '{"create_request": {"key":"Zm9v"} }'
 #{"header":{"cluster_id":"7016043442779247867","member_id":"5993310732371594633","revision":"2","raft_term":"2"}}
Run Code Online (Sandbox Code Playgroud)

手表不会有反应。

这是我的 docker-compose.yml:

version: "3"

services:
    etcd:
        image: quay.io/coreos/etcd:latest
        command: >
            /usr/local/bin/etcd
            --name node1
            --initial-advertise-peer-urls http://${HOST}:2380
            --listen-peer-urls http://0.0.0.0:2380
            --advertise-client-urls http://${HOST}:2379
            --listen-client-urls http://0.0.0.0:2379
            --initial-cluster node1=http://${HOST}:2380
            --debug
        expose:
            - 2379
            - 2380
        ports:
            - "2379:2379"
            - "3380:2380"
Run Code Online (Sandbox Code Playgroud)

api rest etcd etcd3

5
推荐指数
1
解决办法
4775
查看次数

为什么我需要将 ETCDCTL_API=3 放在 etcdctl 前面才能使 etcdctl 快照保存工作?

我硬着头皮做了一个定制的 Kubernetes 安装,并成功地将它安装在 Hyper V 的一个 2 节点集群上(1 个主 1 个工人),一切正常,但是这件事让我摸不着头脑,我想知道是否有人可以给我关于它为什么发生的洞察力。

etcdctl --help
Run Code Online (Sandbox Code Playgroud)

给了我 etcd v2 版本的帮助,它还给了我以下警告。

警告:环境变量 ETCDCTL_API 未设置;默认为 etcdctl v2。设置环境变量 ETCDCTL_API=3 以使用 v3 API 或 ETCDCTL_API=2 以使用 v2 API。

如果我设置环境变量并再次运行命令,它会被忽略:

ETCDCTL_API=3
etcdctl --help
Run Code Online (Sandbox Code Playgroud)

但如果我这样做

ETCDCTL_API=3 etcdctl --help
Run Code Online (Sandbox Code Playgroud)

然后它给了我 etcd v3 版本的帮助,我还需要将 ETCDCTL_API=3 放在 etcdctl snapshot save 前面,以便将其识别为有效命令。

ETCDCTL_API=3 etcdctl snapshot save ~/etcd.backup \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/etcd/ca.pem \
  --cert=/etc/etcd/kubernetes.pem \
  --key=/etc/etcd/kubernetes-key.pem
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

environment-variables etcd kubernetes etcd3 etcd2

5
推荐指数
1
解决办法
4833
查看次数

启动 etcd 因“bind:无法分配请求的地址”而失败

我将 etcd 作为 docker 容器运行,10.132.41.234 是我运行 docker 容器的主机 IP,我收到这样的错误信息,我不知道它是否正确,我现在熟悉 etcd,有人可以提供帮助?谢谢!

2017-09-13 08:55:03.339612 I | etcdmain: etcd Version: 3.0.17
2017-09-13 08:55:03.339891 I | etcdmain: Git SHA: cc198e2
2017-09-13 08:55:03.339902 I | etcdmain: Go Version: go1.6.4
2017-09-13 08:55:03.339912 I | etcdmain: Go OS/Arch: linux/amd64
2017-09-13 08:55:03.339921 I | etcdmain: setting maximum number of CPUs to 2, total number of available CPUs is 2
2017-09-13 08:55:03.340059 I | etcdmain: peerTLS: cert = /etc/ssl/certs/server.pem, key = /etc/ssl/certs/server-key.pem, ca = , trusted-ca = /etc/ssl/certs/ca.pem, client-cert-auth …
Run Code Online (Sandbox Code Playgroud)

etcd3

5
推荐指数
1
解决办法
8854
查看次数

etcd 观察不同的客户端

我很难etcd watch与多种客户合作。

什么有效:我Watchgolang客户端做,我put也在那里做。然后观察寄存器的变化。如果我etcdctl以相同的方式使用,即在命令行中观看/收听,它也可以工作。

什么不起作用:我从命令行发布并在 go 中观看,反之亦然。

  • 观察命令行,输入 golang: 不起作用
  • 观察命令行,输入命令行:有效
  • 观看 golang,输入命令行:不起作用
  • 观看 golang,放入 golang:有效

我所说的“不起作用”是指观察者没有被触发。

我正在使用的 Go 代码(你可以像这样运行go run main.go (true|false) (true|false))

package main

import (
    "github.com/coreos/etcd/clientv3"
    "context"
    "time"
    "fmt"
    "os"
)

func main() {
    listen := os.Args[1]
    submit := os.Args[2]
    cfg := clientv3.Config{
        Endpoints: []string{"http://10.0.75.1:2379"},
    }
    c,_ := clientv3.New(cfg)
    if listen == "true" {
        fmt.Println("listening: on")
        ch := c.Watch(context.Background(), "/foo")
        go func() {
            for s := …
Run Code Online (Sandbox Code Playgroud)

go etcd etcd3

5
推荐指数
0
解决办法
1132
查看次数

ETCD 键“值”大小限制

我是新手ETCD,我想知道可以存储在的值是否有大小限制ETCD

key-value-store coreos etcd etcd3

1
推荐指数
1
解决办法
6998
查看次数