Site blog
Installera och konfigurera etcd
etcd kommer att installeras på easec-linux1, easec-linux2 och easec-linux3. Versionen är 3.4.4 som är den senaste när denna dokumentation skrevs (200317).
Arbetsuppgift 1: Kopiera certifikat till respektive maskin
1. Anslut till easec-linux8 och logga på som easec med lösenordet Pa$$w0rd.
2. På easec-linux8 öppna terminalfönstret (ctrl+alt+t) och skriv in följande kommando och klicka på Enter, för att kopiera certifikat till respektive maskin:
scp ca.pem kubernetes.pem kubernetes-key.pem easec@192.168.1.21:~
Ange Pa$$w0rd som lösenord. Om det är första gången du ansluter, får du skriva yes och klicka på Enter.
3. I terminalfönstret, upprepa föregående kommando, men ändra IP-adress till 192.168.1.22 respektive 192.168.1.23.
Arbetsuppgift 2: Installera etcd
1. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att ansluta till easec-linux1:
ssh easec-linux1
Om det är första gången du ansluter, får du skriva in yes och klicka på Enter, skriv därefter in Pa$$w0rd för att ansluta.
2. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att skapa konfigurationskataloger för etcd:
sudo mkdir /etc/etcd /var/lib/etcd
Skriv in Pa$$w0rd som lösenord för sudo.
3. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att flytta certifikat till katalogen /etc/etcd:
sudo mv ~/ca.pem ~/kubernetes.pem ~/kubernetes-key.pem /etc/etcd
4. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att ladda ner binärer för etcd:
wget https://github.com/etcd-io/etcd/releases/download/v3.4.4/etcd-v3.4.4-linux-amd64.tar.gz
5. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att packa upp binärer för etcd:
tar xvzf etcd-v3.4.4-linux-amd64.tar.gz
6. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att flytta binärer till /usr/local/bin:
sudo mv etcd-v3.4.4-linux-amd64/etcd* /usr/local/bin/
Arbetsuppgift 3: Skapa systemd-fil
1. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att skapa systemd-fil:
sudo nano /etc/systemd/system/etcd.service
I mitt förråd på GitHub finns etcd.service-filer för respektive maskin (https://github.com/easec/cluster/tree/master/stacked)
2. I fönstret för nano, skriv in följande:
[Unit]
Description=etcd
Documentation=https://github.com/coreos
[Service]
ExecStart=/usr/local/bin/etcd \
--name 192.168.1.21 \
--cert-file=/etc/etcd/kubernetes.pem \
--key-file=/etc/etcd/kubernetes-key.pem \
--peer-cert-file=/etc/etcd/kubernetes.pem \
--peer-key-file=/etc/etcd/kubernetes-key.pem \
--trusted-ca-file=/etc/etcd/ca.pem \
--peer-trusted-ca-file=/etc/etcd/ca.pem \
--peer-client-cert-auth \
--client-cert-auth \
--initial-advertise-peer-urls https://192.168.1.21:2380 \
--listen-peer-urls https://192.168.1.21:2380 \
--listen-client-urls https://192.168.1.21:2379,http://127.0.0.1:2379 \
--advertise-client-urls https://192.168.1.21:2379 \
--initial-cluster-token etcd-cluster-0 \
--initial-cluster 192.168.1.21=https://192.168.1.21:2380,192.168.1.22=https://192.168.1.22:2380,192.168.1.23=
https://192.168.1.23:2380 \
--initial-cluster-state new \
--data-dir=/var/lib/etcd
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Klicka på ctrl+x, skriv in ett J och klicka på Enter för att spara filen.
3. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att återinläsa konfigurationen för daemon:
sudo systemctl daemon-reload
4. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att starta etcd vid uppstart:
sudo systemctl enable etcd
5. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att starta etcd:
sudo systemctl start etcd
6. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att avsluta session mot Easec-Linux1:
exit
7. Gör om arbetsuppgift 2 och 3 på easec-linux2 och easec-linux3 med respektive IP-adresser.
Arbetsuppgift 4: Verifiera klustret
1. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att verifiera klustret och att det är igång:
ETCDCTL_API=3 etcdctl member list
Notering felsökning:
Ibland händer det att det går fel :-), när systemd används så är kommandot journalctl ett bra verktyg för att se vad som har gått fel.
Exempelvis: sudo journalctl -u etcd.service (om det är etcd), eftersom det kan bli väldigt mycket information kan det vara bra att lägga denna i en textfil, för att sedan undersöka denna textfil lite närmare sudo journalctl -u etcd.service > logg.txt.
Gör du förändringar, kör dessa kommando:
sudo systemctl daemon-reload
sudo systemctl restart etcd
Del 1: Klientverktyg
På klientdator kommer två verktyg att behövas installeras, Cloud Flare SSL för att generera de olika certifikat som behövs och kubectl för att hantera klustret. Dessa verktyg installeras på Easec-Linux8.
Arbetsuppgift 1: Installera cfssl
1. Anslut till Easec-Linux8 och logga på som easec med lösenordet Pa$$w0rd.2. På Easec-Linux8 öppna terminalfönstret (ctrl+alt+t) och skriv in följande kommando och klicka på Enter:
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 && wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
3. I terminalfönstret skriv in följande kommando och klicka på Enter, för att sätta exekveringsrättigheter:
chmod +x cfssl*
4. I terminalfönstret skriv in följande kommando och klicka på Enter, för att flytta binärer till /usr/local/bin:
sudo mv cfssl_linux-amd64 /usr/local/bin/cfssl
Ange Pa$$w0rd som lösenord för sudo.
5. I terminalfönstret skriv in följande kommando och klicka på Enter, för att flytta binärer till /usr/local/bin:
sudo mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
6. I terminalfönstret skriv in följande kommando och klicka på Enter, för att verifiera installationen:
cfssl version
Arbetsuppgift 2: Installera kubectl
1. I terminalfönstret skriv in följande kommando och klicka på Enter, för att ladda ner binärer för kubectl:
wget https://storage.googleapis.com/kubernetes-release/release/v1.17.3/bin/linux/amd64/kubectl
2. I terminalfönstret skriv in följande kommando och klicka på Enter, för att sätta exekveringsrättigheter:
chmod +x kubectl*
3. I terminalfönstret skriv in följande kommando och klicka på Enter, för att flytta binärer till /usr/local/bin:
sudo mv kubectl /usr/local/bin
4. I terminalfönstret skriv in följande kommando och klicka på Enter, för att verifiera installationen:
kubectl version
Felmeddelande om att verktyget inte kan ansluta till server, kan du ignorera. Det finns ingen server eller servrar i detta läge!
Del 2: Certifikat
Ett antal certifikat kommer att behöva genereras.
Arbetsuppgift 1: Skapa Certificate Authority och generera certifikat
1. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att skapa konfiguration för CA (Certificate Authority):
nano ca-config.json
2. I fönstret med nano, skriv in följande:
{
"signing": {
"default": {
"expiry": "8760h"
},
"profiles": {
"kubernetes": {
"usages": ["signing", "key encipherment", "server auth", "client auth"],
"expiry": "8760h"
}
}
}
}
Klicka på ctrl+x, skriv in ett J och klicka på Enter för att spara filen.
3. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att skapa certifikatbegäran för CA:
nano ca-csr.json
4. I fönstret med nano, skriv in följande:
{
"CN": "Kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "SE",
"L": "Lomma",
"O": "Kubernetes",
"OU": "CA",
"ST": "easec"
}
]
}
Klicka på ctrl+x, skriv in ett J och klicka på Enter för att spara filen.
5. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att skapa certifikat och privat nyckel:
cfssl gencert -initca ca-csr.json | cfssljson -bare ca
6. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att verifiera att ca-key.pem och ca.pem har blivit genererade:
ls -la ca*
7. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att skapa certifikatbegäran för etcd-kluster:
nano kubernetes-csr.json
8. I fönstret med nano, skriv in följande:
{
"CN": "kubernetes",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "SE",
"L": "Lomma",
"O": "Kubernetes",
"OU": "Kubernetes",
"ST": "easec"
}
]
}
Klicka på ctrl+x, skriv in ett J och klicka på Enter för att spara filen.
Arbetsuppgift 2: Skapa certifikat och privat nyckel
1. I terminalfönstret, skriv in följande kommando och klicka på Enter efter varje \ och efter sista raden:
cfssl gencert \
-ca=ca.pem \
-ca-key=ca-key.pem \
-config=ca-config.json \
-hostname=192.168.1.21,192.168.1.22,192.168.1.23, 192.168.1.27,127.0.0.1,kubernetes.default \
-profile=kubernetes kubernetes-csr.json | \
cfssljson -bare kubernetes
2. I terminalfönstret, skriv in följande kommando och klicka på Enter, för att verifiera att kubernetes-key.pem och kubernetes.pem har skapats:
ls -la k*
.easec kommer att publicera ett antal artiklar där konfiguration av Kubernetes i drift beskrivs.
De olika delarna:
Del 1: Certifikat och klientverktyg. https://portal.easec.se/moodle/blog/index.php?entryid=39
Del 2: HA-Proxy. https://portal.easec.se/moodle/blog/index.php?entryid=40
Del 3: Installera och konfigurera etcd. https://portal.easec.se/moodle/blog/index.php?entryid=41
Del 4: Installera master. https://portal.easec.se/moodle/blog/index.php?entryid=44
Del 5: Installera worker. https://portal.easec.se/moodle/blog/index.php?entryid=45