11.02.2019
Abstract: Minikube mit KVM2: Was muss man tun, damit minikube eine feste IP-Addresse erhält und Pods z.B. die Datenbank auf dem Host erreichen können?
[
{
"attrs": [],
"content": "Minikube mit KVM2",
"id": "_v3tue9an6",
"type": "h2"
},
{
"attrs": [],
"content": "Der Standard-Treiber f\u00fcr minikube unter Linux ist VirtualBox. Vermutlich mit dem Update auf VirtualBox 6 hat sich leider ein Fehler eingeschlichen, der daf\u00fcr sorgt, dass minikube bei jedem \n minikube-net \n 46170500-4617-45ef-bf4c-f5645667bf4e \n \n \n \n \n \n \n \n \n \n ",
"id": "_ftvextmd1",
"type": "code"
},
{
"attrs": [],
"content": "Zugriff auf Host-Services",
"id": "_m7ud5v22t",
"type": "h3"
},
{
"attrs": [],
"content": "Falls zum Beispiel die Datenbank auf dem eigenen Rechner au\u00dferhalb des Clusters l\u00e4uft, muss jetzt noch der Endpoint des DB-Services angepasst werden, damit die Pods die Datenbank auf dem Host erreichen. Die alte Host-IP-Adresse von VirtualBox muss durch die von virsh ersetzt werden.
Die Host-Adresse l\u00e4sst sich z.B. so ermitteln:", "id": "_f339lqreo", "type": "paragraph" }, { "attrs": { "language": "bash" }, "content": " $ minikube ssh\n\n $ route\n Kernel IP routing table\n Destination Gateway Genmask Flags Metric Ref Use Iface\n default monge 0.0.0.0 UG 1024 0 0 eth0\n 172.17.0.0 * 255.255.0.0 U 0 0 0 docker0\n 192.168.39.0 * 255.255.255.0 U 0 0 0 eth1\n 192.168.122.0 * 255.255.255.0 U 0 0 0 eth0\n 192.168.122.1 * 255.255.255.255 UH 1024 0 0 eth0", "id": "_wv6kprv54", "type": "code" }, { "attrs": [], "content": "Die
minikube start
eine neue IP-Adresse erh\u00e4lt.",
"id": "_lAY3eEv7a",
"type": "paragraph"
},
{
"attrs": [],
"content": "Da es anscheinend au\u00dfer einem Downgrade von VirtualBox (link:https://github.com/kubernetes/minikube/issues/951 target: _blank text: keine einfache L\u00f6sung) f\u00fcr das Problem gibt, ist dies der ideale Anlass, einmal KVM2 auszuprobieren. ",
"id": "_cycham2h7",
"type": "kirbytext"
},
{
"attrs": [],
"content": "Feste IP-Adresse zuordnen",
"id": "_6kpa4xuhs",
"type": "h3"
},
{
"attrs": [],
"content": "Die Installation nach Anleitung geht einfach. Allerdings erh\u00e4lt minikube standardm\u00e4\u00dfig mit diesem Treiber mit jedem minikube start
ebenfalls eine neue IP-Adresse. Dieses l\u00e4sst sich jedoch leicht \u00e4ndern, indem man minikube ein festes DHCP-Lease zuordnet. Dazu muss zun\u00e4chst die MAC-Adresse ermittelt werden:",
"id": "_501qfrsdi",
"type": "paragraph"
},
{
"attrs": {
"language": "bash"
},
"content": " $ sudo virsh net-dhcp-leases minikube-net\n Expiry Time MAC-Adresse Protocol IP address Hostname Client ID or DUID \n -------------------------------------------------------------------------------------------------------------------------------------------\n 2019-02-06 09:48:11 38:4c:4f:93:20:0f ipv4 192.168.39.3/24 minikube ff:e2:34:3f:3e:00:02:00:00:ab:11:81:b2:71:94:04:68:23:5c ",
"id": "_mnd333ia8",
"type": "code"
},
{
"attrs": [],
"content": "Die MAC-Adresse ist \u00fcber Neustarts stabil. F\u00fcr diese MAC-Adresse kann man nun in virsh ein festes DHCP-Lease erstellen. Der Befehl",
"id": "_e3g2pnsks",
"type": "paragraph"
},
{
"attrs": {
"language": "bash"
},
"content": "sudo virsh net-edit minikube-net",
"id": "_g9tlbccxe",
"type": "code"
},
{
"attrs": [],
"content": "\u00f6ffnet die Konfiguration im $EDITOR
. Im Abschnitt <dhcp>
wird dann das Lease f\u00fcr diese MAC-Adresse in einem <host>
-Element eingetragen:",
"id": "_rwgn43xzk",
"type": "paragraph"
},
{
"attrs": [],
"content": "Die Host-Adresse l\u00e4sst sich z.B. so ermitteln:", "id": "_f339lqreo", "type": "paragraph" }, { "attrs": { "language": "bash" }, "content": " $ minikube ssh\n\n $ route\n Kernel IP routing table\n Destination Gateway Genmask Flags Metric Ref Use Iface\n default monge 0.0.0.0 UG 1024 0 0 eth0\n 172.17.0.0 * 255.255.0.0 U 0 0 0 docker0\n 192.168.39.0 * 255.255.255.0 U 0 0 0 eth1\n 192.168.122.0 * 255.255.255.0 U 0 0 0 eth0\n 192.168.122.1 * 255.255.255.255 UH 1024 0 0 eth0", "id": "_wv6kprv54", "type": "code" }, { "attrs": [], "content": "Die
192.168.122.1
muss nun in die Enpoint-Definition eingetragen werden:",
"id": "_c6287i5z2",
"type": "paragraph"
},
{
"attrs": [],
"content": " kind: Endpoints\n apiVersion: v1\n metadata:\n name: dev-postgres\n subsets:\n - addresses:\n - ip: *[.line-through]#192.168.99.1# 192.168.122.1* \n ports:\n - port: 5432",
"id": "_y56tnt9g4",
"type": "code"
},
{
"attrs": [],
"content": "Fertig. Jetzt funktioniert wieder alles wie vorher. Nur cooler.",
"id": "_8nq1smyqr",
"type": "paragraph"
}
]