Eine leichte Version von Kubernetes namens k3s, veröffentlicht von Rancher Es ist ein Ersatz, der mithilfe von Docker einen Cluster erstellt. Für diejenigen, die bereits mit Docker-Compose auf VPS gearbeitet haben Ich denke, es ist ein Werkzeug, das eine Alternative sein kann.
Dieses Mal ist es, da es sich um einen Test handelt, nahezu kostenlos Wir werden einen Cluster mit k3d erstellen. Der Server verwendet das stärkste Übersee-VPS Time4VPS. Sie können eine kostenlose Domain erhalten Ich werde es mit Freiheit bekommen. Verwenden Sie für das Docker-Container-Image diesen Typ.
Bereiten Sie zunächst einen vps-Server von [hier] aus (https://www.time4vps.com/). Der in diesem Artikel verwendete Betriebssystemtyp ist übrigens "Ubuntu 18.04". Lesen Sie nach Abschluss des vps-Vertrags den folgenden Artikel und nehmen Sie die Grundeinstellungen für Ubuntu vor. Ubuntu minimale Anfangseinstellungen
Natürlich benötigt k3d Docker, also installieren Sie Docker zuerst. Wenn Sie Docker unter Ubuntu installieren möchten, wird empfohlen, diesen Artikel zu lesen. Installieren Sie Docker unter Ubuntu 18.04 (auch + Docker-Compose)
Führen Sie nach der Installation von Docker Install k3d aus.
curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash
Jetzt ist es Zeit, einen Cluster mit k3d einzurichten.
Wenden Sie für "
k3d cluster create hoge-cluster --agents 2 --api-port <your vps global ip>:6550 -p 80:80@agent[0] -p 443:443@agent[0]
Führen Sie zunächst auf der Serverseite Folgendes aus und notieren Sie sich die Zertifikatsberechtigungsdaten und das Kennwort des Benutzers.
vi ~/.kube/config
Fügen Sie die Clusterinformationen, den Kontext und den Benutzer, die dieses Mal erstellt wurden, zum lokalen ~ / .kube / config
hinzu.
Dadurch wird das lokale Kubectl mit dem Cluster auf Time4VPS verbunden
~/.kube/config(lokal)
apiVersion: v1
kind: Config
current-context: hoge-cluster
preferences: {}
clusters:
- name: hoge-cluster
cluster:
certificate-authority-data: <your certificate-authority-data in vps ~/.kube/config>
server: https://<your vps global ip>:6550
users:
- name: admin@hoge-cluster
user:
password: <your password in vps ~/.kube/config>
username: admin
contexts:
- name: hoge-cluster
context:
cluster: hoge-cluster
user: admin@hoge-cluster
*** Überprüfen Sie, ob Sie eine Verbindung zum Cluster herstellen können ***
kubectl get node
NAME STATUS ROLES AGE VERSION
k3d-hoge-cluster-agent-0 Ready <none> 39m v1.18.8+k3s1
k3d-hoge-cluster-agent-1 Ready <none> 39m v1.18.8+k3s1
k3d-hoge-cluster-server-0 Ready master 39m v1.18.8+k3s1
Installieren Sie dann den Zertifizierungsmanager im Cluster, um den Dienst über SSL bereitzustellen. Die Installation von cert-manager ist sehr einfach, da die Installation mit einem einzigen Manifest abgeschlossen wird. Cert-Manager installieren
Ich halte es nicht für eine Verschwendung, eine kostenpflichtige Domain zu erhalten, indem Sie sie in einem Test ausprobieren. Es ist also praktisch, eine kostenlose Domain namens [freenom] zu erhalten (https://my.freenom.com/clientarea.php). Nutzen Sie den Service. Der zu erwerbende Domainname lautet diesmal "k3d-hello-app.tk".
Schreiben Sie abschließend die Manifestdatei und stellen Sie sie bereit. Dieses Mal verwendet das Container-Image die von Google veröffentlichte Registrierung als Beispiel für GKE. Es ist eine einsame Aufgabe, da keine Image-Build-Arbeit oder Push-Arbeit an die Remote-Registrierung erfolgt. Bereiten Sie ein Verzeichnis vor, um das Manifest mit dem Namen k8s zu verwalten Bereiten wir zwei Arten von Manifestdateien vor.
#Die Verzeichnisstruktur sieht so aus
.
└── k8s
├── hello-app.yaml
└── ingress.yaml
k8s/hello-app.yaml
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 8080
targetPort: 8080
selector:
app: hello-app
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app-deployment
spec:
replicas: 6
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
env: stage
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: hello-app
ports:
- containerPort: 8080
Die Art des Dienstes ist übrigens Load Balancer
k3d kann type: LoadBalancer
verwenden.
Schreiben Sie als Nächstes eine Manifestdatei für den Eingang.
Ersetzen Sie "
k8s/ingress.yaml
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-issuer
spec:
acme:
# The ACME server URL
server: https://acme-v02.api.letsencrypt.org/directory
# Email address used for ACME registration, update to your own.
email: <your mail address>
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt-issuer
solvers:
- http01:
ingress:
class: traefik
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: letsencrypt-cert
spec:
dnsNames:
- k3d-hello-app.tk
secretName: letsencrypt-cert-tls
issuerRef:
name: letsencrypt-issuer
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hoge-cluster-ingress
annotations:
ingress.kubernetes.io/ssl-redirect: "true"
kubernetes.io/ingress.class: "traefik"
certmanager.k8s.io/issuer: "letsencrypt-issuer"
certmanager.k8s.io/acme-challenge-type: http01
spec:
tls:
- secretName: letsencrypt-cert-tls
hosts:
- k3d-hello-app.tk
rules:
- host: k3d-hello-app.tk
http:
paths:
- path: /
backend:
serviceName: hello-app-service
servicePort: 8080
Wenden wir nun das Manifest an.
kubectl apply -f k8s -R
Übrigens brauche ich diesmal nicht die Flagge "-R". Wenn der Inhalt der Manifestdatei sehr groß wurde. Wenn es um etwas geht Ich denke, es wird notwendig sein, die Manifestdatei in Pakete zu unterteilen. Wenn Sie in einem solchen Fall das Flag "-R" hinzufügen, wird auch das Manifest angezeigt, das in Pakete unterteilt ist Wenn Sie es rekursiv anwenden, ist es das, was es ist.
#Zum Beispiel Paketaufteilung wie diese
.
└── k8s
├── hello-app.yaml
└── ingress
├── certificate.yaml
├── ingress.yaml
└── issuer.yaml
Sobald das Manifest angewendet wurde, überprüfen Sie es in Ihrem Browser. Wenn es wie folgt angezeigt wird und eine SSL-Konvertierung möglich ist, ist es abgeschlossen!
k3d richtet einen virtuellen Knoten auf einem physischen Server ein Da wir einen Cluster erstellen, gibt es keine Verfügbarkeit auf der Ebene des physischen Servers. Wenn ein Server angehalten wird, ist es verrückt! Und das Ganze Die in diesem Cluster betriebenen Dienste werden angehalten. Der sogenannte Explosionsradius ist keine große Aufregung. Es ist schon ein einmaliger Todesstoß ww Abhängig von der Größe Ihres Unternehmens entspricht es möglicherweise überhaupt nicht Ihren Anforderungen. Wenn Sie sich darauf konzentrieren, laufende Kosten wie die persönliche Größenordnung einzusparen Gibt es nicht einen virtuellen Cluster wie k3d? Insbesondere habe ich persönlich Docker-Compose für die Produktion verwendet! Es ist sehr empfehlenswert für diejenigen, die mögen.
Recommended Posts