kubernetes-the-hard-way/docs/07-bootstrapping-etcd.md

83 lines
1.6 KiB
Markdown
Raw Normal View History

2017-08-29 00:19:25 +03:00
# Bootstrapping the etcd Cluster
Kubernetes components are stateless and store cluster state in [etcd]. In this
lab you will bootstrap a single node etcd cluster.
2017-08-29 00:19:25 +03:00
## Prerequisites
Copy `etcd` binaries and systemd unit files to the `controlplane` machine:
2017-08-29 00:19:25 +03:00
```bash
scp \
2025-04-10 09:08:13 +03:00
downloads/controller/etcd \
downloads/client/etcdctl \
units/etcd.service \
root@controlplane:~/
2017-08-29 00:19:25 +03:00
```
The commands in this lab must be run on the `controlplane` machine. Login to
the `controlplane` machine using the `ssh` command. Example:
2017-08-29 00:19:25 +03:00
```bash
ssh root@controlplane
```
2017-08-29 00:19:25 +03:00
## Bootstrapping an etcd Cluster
2017-08-29 00:19:25 +03:00
### Install the etcd Binaries
2017-08-29 00:19:25 +03:00
Extract and install the `etcd` server and the `etcdctl` command line utility:
```bash
{
2025-04-10 09:08:13 +03:00
mv etcd etcdctl /usr/local/bin/
}
2017-08-29 00:19:25 +03:00
```
### Configure the etcd Server
```bash
{
mkdir -p /etc/etcd /var/lib/etcd
chmod 700 /var/lib/etcd
cp ca.crt kube-apiserver.key kube-apiserver.crt \
/etc/etcd/
}
2017-08-29 00:19:25 +03:00
```
Each etcd member must have a unique name within an etcd cluster. Set the etcd
name to match the hostname of the current compute instance:
2017-08-29 00:19:25 +03:00
Create the `etcd.service` systemd unit file:
```bash
mv etcd.service /etc/systemd/system/
2017-08-29 00:19:25 +03:00
```
### Start the etcd Server
```bash
{
systemctl daemon-reload
systemctl enable etcd
systemctl start etcd
}
2017-08-29 00:19:25 +03:00
```
## Verification
List the etcd cluster members:
```bash
etcdctl member list
2017-08-29 00:19:25 +03:00
```
```text
6702b0a34e2cfd39, started, controller, http://127.0.0.1:2380, http://127.0.0.1:2379, false
2017-08-29 00:19:25 +03:00
```
Next: [Bootstrapping the Kubernetes Control Plane](08-bootstrapping-kubernetes-controllers.md)
---
[etcd]: https://github.com/etcd-io/etcd