Previous change logs can be found at CHANGELOG-3.1.
The minimum recommended etcd versions to run in production is 3.1.11+, 3.2.10+, and 3.3.0+.
See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
etcd --debug flag to see per-request debug information.snapshot status returns "snapshot file integrity check failed..." error.See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_network_peer_round_trip_time_seconds Prometheus metric to track leader heartbeats.
etcd_snap_db_fsync_duration_seconds_count Prometheus metric.etcd_snap_db_save_total_duration_seconds_bucket Prometheus metric.etcd_network_snapshot_send_success Prometheus metric.etcd_network_snapshot_send_failures Prometheus metric.etcd_network_snapshot_send_total_duration_seconds Prometheus metric.etcd_network_snapshot_receive_success Prometheus metric.etcd_network_snapshot_receive_failures Prometheus metric.etcd_network_snapshot_receive_total_duration_seconds Prometheus metric.etcd_server_id Prometheus metric.etcd_server_health_success Prometheus metric.etcd_server_health_failures Prometheus metric.etcd_server_read_indexes_failed_total Prometheus metric.clientv3/concurrency package.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_server_go_version Prometheus metric.etcd_server_heartbeat_send_failures_total Prometheus metric.etcd_server_slow_apply_total Prometheus metric.etcd_disk_backend_defrag_duration_seconds Prometheus metric.etcd_mvcc_hash_duration_seconds Prometheus metric.etcd_server_slow_read_indexes_total Prometheus metric.etcd_server_quota_backend_bytes Prometheus metric.
etcd_mvcc_db_total_size_in_bytes and etcd_mvcc_db_total_size_in_use_in_bytes.etcd_server_quota_backend_bytes 2.147483648e+09 means current quota size is 2 GB.etcd_mvcc_db_total_size_in_bytes 20480 means current physically allocated DB size is 20 KB.etcd_mvcc_db_total_size_in_use_in_bytes 16384 means future DB size if defragment operation is complete.etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes is the number of bytes that can be saved on disk with defragment operation.etcd_mvcc_db_total_size_in_bytes Prometheus metric.
etcd_debugging_mvcc_db_total_size_in_bytes.etcd_mvcc_db_total_size_in_use_in_bytes Prometheus metric.
etcd_mvcc_db_total_size_in_bytes and etcd_server_quota_backend_bytes.etcd_server_quota_backend_bytes 2.147483648e+09 means current quota size is 2 GB.etcd_mvcc_db_total_size_in_bytes 20480 means current physically allocated DB size is 20 KB.etcd_mvcc_db_total_size_in_use_in_bytes 16384 means future DB size if defragment operation is complete.etcd_mvcc_db_total_size_in_bytes - etcd_mvcc_db_total_size_in_use_in_bytes is the number of bytes that can be saved on disk with defragment operation.grpc-proxy start --cert-file, grpc-proxy start --key-file and grpc-proxy start --trusted-ca-file flags.grpc-proxy start --metrics-addr flag for specifying a separate metrics listen address.<-chan *clientv3LeaseKeepAliveResponse from clientv3.Lease.KeepAlive was never consumed or channel is full, client was sending keepalive request every 500ms instead of expected rate of every "TTL / 3" duration.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
read-only range request "key:\"/a\" range_end:\"/b\" " with result "range_response_count:3 size:96" took too long (97.966µs) to execute.See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_server_version Prometheus metric.
etcd-version-monitor.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
etcd --cipher-suites flag.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
mvcc server panic from restore operation.
See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
*.snap.db snapshot files.
--max-snapshots flag to purge old *.snap.db files.*.snap.db files to keep maximum --max-snapshots number of files on disk.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_debugging_server_lease_expired_total Prometheus metric.etcd_server_is_leader Prometheus metric.(*tls.Config).GetCertificate for TLS reload if and only if server's (*tls.Config).Certificates field is not empty, or (*tls.ClientHelloInfo).ServerName is not empty with a valid SNI from the client. Previously, etcd always populates (*tls.Config).Certificates on the initial client TLS handshake, as non-empty. Thus, client was always expected to supply a matching SNI in order to pass the TLS verification and to trigger (*tls.Config).GetCertificate to reload TLS assets.*tls.ClientHelloInfo with an empty ServerName field, thus failing to trigger the TLS reload on initial TLS handshake; this becomes a problem when expired certificates need to be replaced online.(*tls.Config).Certificates is created empty on initial TLS client handshake, first to trigger (*tls.Config).GetCertificate, and then to populate rest of the certificates on every new TLS connection, even when client SNI is empty (e.g. cert only includes IPs).etcd --initial-election-tick-advance flag to configure initial election tick fast-forward.
etcd --initial-election-tick-advance=true, then local member fast-forwards election ticks to speed up "initial" leader election trigger.--initial-election-tick-advance=false.--initial-election-tick-advance at the cost of slow initial bootstrap.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_network_peer_sent_failures_total count.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
curl -L http://localhost:2379/v3/election/proclaim -X POST -d '{"value":""}', curl -L http://localhost:2379/v3/election/resign -X POST -d '{"value":""}'.TTL values for Lease Grant.
TTL parameter to Grant request is unit of second.TTL values exceeding math.MaxInt64 expire in unexpected ways.rpctypes.ErrLeaseTTLTooLarge to client, when the requested TTL is larger than 9,000,000,000 seconds (which is >285 years).Lease is meant for short-periodic keepalives or sessions, in the range of seconds or minutes. Not for hours or days!raft.Config.CheckQuorum when starting with ForceNewCluster.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
mvcc "unsynced" watcher restore operation.
See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
GracefulStop TLS-enabled server.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
google.golang.org/grpc from v1.7.4 to v1.7.5.github.com/grpc-ecosystem/grpc-gateway from v1.3 to v1.3.0.Revision compactor in server-side.MaxCallSendMsgSize and MaxCallRecvMsgSize fields to clientv3.Config.
MaxCallSendMsgSize default value is 2 MiB, if not configured.MaxCallRecvMsgSize default value is math.MaxInt32, if not configured.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
google.golang.org/grpc from v1.7.3 to v1.7.4.See security doc for more details.
WriteStatus call to prevent TLS-enabled etcd server crash.--listen-metrics-urls flag in monitoring document (non-released in v3.2.x, planned for v3.3.x).See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
google.golang.org/grpc from v1.2.1 to v1.7.3.github.com/grpc-ecosystem/grpc-gateway from v1.2.0 to v1.3.See security doc for more details.
ServerName with *.{ROOT_DOMAIN} to support non-wildcard subject alternative names in the certs (see issue #8445 for more contexts).
etcd --discovery-srv=etcd.local will only authenticate peers/clients when the provided certs have root domain etcd.local (not *.etcd.local) as an entry in Subject Alternative Name (SAN) field.boltdb/bolt with coreos/bbolt to address backend database size issue.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
See security doc for more details.
golang.org/x/crypto/bcrypt (see golang/crypto@6c586e1).ServerName with *.{ROOT_DOMAIN}, in order to support sub-domain wildcard matching (see issue #8445 for more contexts).
etcd --discovery-srv=etcd.local will only authenticate peers/clients when the provided certs have root domain *.etcd.local as an entry in Subject Alternative Name (SAN) field.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
KeysOnly flag.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
concurrency/stm Put with serializable snapshot.
See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
--listen-peer-urls flag.--enable-pprof flag to etcd configuration file format.See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_debugging_mvcc_keys_total inconsistency.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
endpoint health.See security doc for more details.
SAN. For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server first reverse-lookups the remote IP address to get a list of names mapping to that address (e.g. nslookup IPADDR). Then accepts the connection if those names have a matching name with peer cert's DNS names (either by exact or wildcard match). If none is matched, server forward-lookups each DNS entry in peer cert (e.g. look up example.default.svc when the entry is *.example.default.svc), and accepts connection only when the host's resolved addresses have the matching IP address with the peer's remote IP address. For example, peer B's CSR (with cfssl) SAN field is ["*.example.default.svc", "*.example.default.svc.cluster.local"] when peer B's remote IP address is 10.138.0.2. When peer B tries to join the cluster, peer A reverse-lookup the IP 10.138.0.2 to get the list of host names. And either exact or wildcard match the host names with peer B's cert DNS names in Subject Alternative Name (SAN) field. If none of reverse/forward lookups worked, it returns an error "tls: "10.138.0.2" does not match any of DNSNames ["*.example.default.svc","*.example.default.svc.cluster.local"]. See issue#8268 for more detail.See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
/metrics endpoint when --enable-v2=false.PrevKv flag.gcr.io/etcd-development/etcd.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
docker pull quay.io/coreos/etcd:v3.2 to fetch latest v3.2 versionsSee code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
See security doc for more details.
cfssl) SAN field is ["invalid.domain", "10.138.0.2"] when peer B's remote IP address is 10.138.0.2 and invalid.domain is a invalid host. When peer B tries to join the cluster, peer A successfully authenticates B, since Subject Alternative Name (SAN) field has a valid matching IP address. See issue#8206 for more detail.net.Listener rewrites IPv4 0.0.0.0 to IPv6 [::], breaking IPv6 disabled hosts.See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
See code changes and v3.2 upgrade guide for any breaking changes. Again, before running upgrades from any previous release, please make sure to read change logs below and v3.2 upgrade guide.
--snapshot-count default value from 10,000 to 100,000.
--snapshot-count value for lower memory usage.--snapshot-count value for better availabilities of slow followers (less frequent snapshots from leader).clientv3.Lease.TimeToLive returns LeaseTimeToLiveResponse.TTL == -1 on lease not found.clientv3.NewFromConfigFile is moved to clientv3/yaml.NewConfig.embed.Etcd.Peers field is now []*peerListener.--listen-peer-urls and --listen-client-urls (3.1 only prints out warnings), since domain name is invalid for network interface binding.google.golang.org/grpc from v1.0.4 to v1.2.1.github.com/grpc-ecosystem/grpc-gateway to v1.2.0.See List of metrics for all metrics per release.
Note that any etcd_debugging_* metrics are experimental and subject to change.
etcd_disk_backend_snapshot_duration_secondsetcd_debugging_server_lease_expired_total metrics.See security doc for more details.
SAN. For instance, if peer cert contains any IP addresses in Subject Alternative Name (SAN) field, server authenticates a peer only when the remote IP address matches one of those IP addresses. This is to prevent unauthorized endpoints from joining the cluster. For example, peer B's CSR (with cfssl) SAN field is ["*.example.default.svc", "*.example.default.svc.cluster.local", "10.138.0.27"] when peer B's actual IP address is 10.138.0.2, not 10.138.0.27. When peer B tries to join the cluster, peer A will reject B with the error x509: certificate is valid for 10.138.0.27, not 10.138.0.2, because B's remote IP address does not match the one in Subject Alternative Name (SAN) field.DNSNames when checking SAN. For instance, if peer cert contains only DNS names (no IP addresses) in Subject Alternative Name (SAN) field, server authenticates a peer only when forward-lookups (dig b.com) on those DNS names have matching IP with the remote IP address. For example, peer B's CSR (with cfssl) SAN field is ["b.com"] when peer B's remote IP address is 10.138.0.2. When peer B tries to join the cluster, peer A looks up the incoming host b.com to get the list of IP addresses (e.g. dig b.com). And rejects B if the list does not contain the IP 10.138.0.2, with the error tls: 10.138.0.2 does not match any of DNSNames ["b.com"].etcdserver/api/v3client
etcd --enable-v2 flag to enable v2 API server.
etcd --enable-v2=true by default.etcd --auth-token flag.--auto-compaction-retention=10, v3.1 compacts revision 1000, 2000, and 3000 for every 10-hour, while v3.2 compacts revision 1000, 1100, and 1200 for every 1-hour.ErrOldCluster with server version checking.WithPrefix() into WithFromKey() for empty key.check perf command.etcdctl --from-key flag to role grant-permission command.lock command takes an optional command to execute.nsswitch.conf to Docker container image.