Une version allégée de Kubernetes appelée k3s publiée par Rancher C'est un substitut qui construit un cluster à l'aide de docker. Pour ceux qui ont déjà opéré avec docker-compose sur VPS Je pense que c'est un outil qui peut être une alternative.
Cette fois, parce que c'est un test, c'est le plus proche possible Nous allons construire un cluster en utilisant k3d. Le serveur adopte le VPS Time4VPS le plus puissant à l'étranger, Vous pouvez obtenir un domaine gratuit Je l'obtiendrai avec freenom. Pour l'image du conteneur Docker, utilisez this guy.
Tout d'abord, préparez un serveur vps à partir de ici. Au fait, le type de système d'exploitation utilisé dans cet article est ʻUbuntu 18.04`. Après avoir terminé le contrat vps, reportez-vous à l'article ci-dessous et définissez les paramètres initiaux pour Ubuntu. Paramètres initiaux minimum d'Ubuntu
Bien sûr, k3d nécessite docker, alors installez d'abord docker. Si vous souhaitez installer docker sur Ubuntu, il est recommandé de se référer à cet article. Installer Docker sur Ubuntu 18.04 (également + docker-compose)
Après avoir installé le docker, faites Install k3d.
curl -s https://raw.githubusercontent.com/rancher/k3d/main/install.sh | bash
Il est maintenant temps de configurer un cluster avec k3d.
Pour <your vps global ip>
, appliquez l'ip vps que vous avez préparé.
k3d cluster create hoge-cluster --agents 2 --api-port <your vps global ip>:6550 -p 80:80@agent[0] -p 443:443@agent[0]
Tout d'abord, exécutez ce qui suit côté serveur et notez les données de l'autorité de certification et le mot de passe de l'utilisateur.
vi ~/.kube/config
Ajoutez les informations de cluster, le contexte et l'utilisateur créés cette fois dans le fichier local ~ / .kube / config
.
Cela connectera le kubectl local au cluster sur Time4VPS
~/.kube/config(local)
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
*** Vérifiez si vous pouvez vous connecter au cluster ***
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
Installez ensuite cert-manager sur le cluster pour fournir le service via SSL. L'installation de cert-manager est super facile car l'installation est terminée avec un seul manifeste. Installer cert-manager
Je ne pense pas que ce soit un gaspillage pour obtenir un domaine payant simplement en l'essayant dans un test. Il est donc pratique d'obtenir un domaine gratuit appelé freenom Utilisez le service. Le nom de domaine à acquérir est cette fois «k3d-hello-app.tk».
Enfin, écrivez le fichier manifeste et déployez-le. Cette fois, l'image du conteneur utilise le registre publié par google comme exemple pour GKE. C'est une tâche solitaire car il n'y a pas de travail de création d'image ou de travail de poussée vers le registre distant. Préparez un répertoire pour gérer le manifeste appelé k8s Préparons deux types de fichiers manifestes.
#La structure du répertoire ressemble à ceci
.
└── 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
Au fait, le type de service est Load Balancer
k3d peut utiliser type: LoadBalancer
.
Ensuite, écrivez un fichier manifeste pour l'entrée.
Remplacez «
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
Maintenant, appliquons le manifeste.
kubectl apply -f k8s -R
Au fait, je n'ai pas besoin du drapeau -R
cette fois.
Si le contenu du fichier manifeste devenait énorme. Quand il s'agit de quelque chose
Je pense qu'il sera nécessaire de diviser le fichier manifeste en packages.
Dans un tel cas, si vous ajoutez l'indicateur -R
, le manifeste qui est divisé en packages sera également
Si vous l'appliquez de manière récursive, c'est ce que c'est.
#Par exemple, une division de colis comme celle-ci
.
└── k8s
├── hello-app.yaml
└── ingress
├── certificate.yaml
├── ingress.yaml
└── issuer.yaml
Une fois le manifeste appliqué, vérifiez-le dans votre navigateur. S'il est affiché comme ci-dessous et que la conversion SSL est possible, c'est terminé!
k3d configure un nœud virtuel dans un serveur physique Puisque nous construisons un cluster, il n'y a aucune disponibilité au niveau du serveur physique. Si un serveur est en pause, c'est fou! Et le tout Les services fonctionnant dans ce cluster seront suspendus. Le soi-disant rayon de souffle n'est pas un gros problème. C'est déjà un coup mortel d'un seul coup ww Ainsi, selon la taille de votre entreprise, il se peut qu'elle ne réponde pas du tout à vos exigences. Lorsque vous vous concentrez sur la réduction des coûts de fonctionnement tels que l'échelle personnelle N'y a-t-il pas un cluster virtuel comme k3d? En particulier, j'ai personnellement utilisé docker-compose pour la production! Il est fortement recommandé pour ceux qui aiment.
Recommended Posts