2020/11/17
今回できたこと
minikubeネットワークの構成図をまとめた。
minikube環境へのsshログインの方法がわかった。
未解決
実習用macOS minikube環境
ロードバランサを実現するexposeの仕方がわからない。
現状のminikube環境を破棄して、一から構築する方針に変えたほうが良いかもしれない。
お約束
定例作業
チュートリアルKubernetesの基本を学ぶをmacOS版minikubeで試す(つづき)
当初、KataKoda版でモジュールの最後まで作業をしていた(詳細省略)が、Timeoutで再実験する度にPodやサービスのIDやネットワーク情報が変わるため、主としてmacOSローカル版で検証を行うことにした。
今回のチュートリアルに関するPodとサービスの情報を得る。
code:shell
% kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-minikube-5d9b964bfb-fzgbt 1/1 Running 4 17d
hello-minikube-5d9b964bfb-w8r7t 1/1 Running 4 17d
hello-minikube-5d9b964bfb-z4pwh 1/1 Running 4 17d
% kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-minikube NodePort 10.105.226.81 <none> 8080:31081/TCP 17d
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 17d
この時点で、exposeで動作するサービスhello-minikubeが動いているため、一度このサービスをdelete serviceで削除する。
code:shell
% kubectl delete service hello-minikube
service "hello-minikube" deleted
% kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 17d
再度、このサービスをexposeし、情報を確認する。
code:shell
% kubectl expose deployment/hello-minikube --type="NodePort" --port 8080
service/hello-minikube exposed
% kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-minikube NodePort 10.108.54.16 <none> 8080:30940/TCP 12s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 17d
% kubectl describe services/hello-minikube
Name: hello-minikube
Namespace: default
Labels: app=hello-minikube
Annotations: <none>
Selector: app=hello-minikube
Type: NodePort
IP: 10.108.54.16
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 30940/TCP
Endpoints: 172.17.0.2:8080,172.17.0.5:8080,172.17.0.6:8080
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
新たにexposeしたサービスでは、期待していたようには動いていない。
code:shell
% curl 10.108.54.16:8080
curl: (7) Failed to connect to 10.108.54.16 port 8080: Operation timed out
% curl 10.108.54.16:30940
curl: (7) Failed to connect to 10.108.54.16 port 30940: Operation timed out
minikubeから各Podに直接アクセスすると、期待通りの動作はしている。
code:shell
$ curl 172.17.0.5:8080
Hostname: hello-minikube-5d9b964bfb-fzgbt
Pod Information:
-no pod information available-
Server values:
server_version=nginx: 1.13.3 - lua: 10008
Request Information:
client_address=172.17.0.1
method=GET
real path=/
query=
request_version=1.1
request_scheme=http
Request Headers:
accept=*/*
host=172.17.0.5:8080
user-agent=curl/7.72.0
Request Body:
-no body in request-
おそらく、ロードバランサを提供するサービスをexposeする時には、なんらかの指定が必要なためではないかと考えている。
minikube VMにsshでログインするための設定まとめ
以下の方法でもminikube VMにログインできるが、作業が多すぎるので、minikube sshを使った方が良い。
VirtualBoxの右クリックメニューから表示を実行すると、minikubeコンソールが表示される。
外部のminikubeホストであるmacOSからsshでアクセスするために設定を変更する。
rootにパスワードをつける。
code:shell
# passwd
Changing password for root
New password:
Retype password:
passwd: password for root changed by root
sshdの設定を変更して、rootでログインできるようにする。
code:/etc/ssh/sshd_config.diff
# diff -u /etc/ssh/sshd_config{.20201117,}
--- /etc/ssh/sshd_config.20201117
+++ /etc/ssh/sshd_config
@@ -31,6 +31,7 @@
+PermitRootLogin yes
MaxSessions 1000
sshdに-HUPシグナルを送り、設定の再読み込みを行う。
code:shell
# ps agxuw|grep sshd
root 2313 0.0 0.1 7160 5132 ? Ss 03:18 0:00 /usr/sbin/sshd -D -e
root 20353 0.0 0.1 7292 5296 ? Ss 04:26 0:00 sshd: root@pts/0
root 20631 0.0 0.0 3320 428 pts/0 S+ 04:27 0:00 grep sshd
# kill -HUP 2313
これで、外部からrootでログインできるようになった。
minikube環境のネットワーク構成図
現在動いているmikube環境のネットワーク構成図を作成した。
https://gyazo.com/e8cb308a5468648ba4cb7e5f84e62ced
以下、ネットワークの詳細を調べる。
minikubeを動かしているmacOSのネットワーク構成は、以下の通り。
code:shell
% ifconfig -a inet
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
EHC253: flags=0<> mtu 0
EHC250: flags=0<> mtu 0
fw0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 4078
en1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.3.3 netmask 0xffffff00 broadcast 192.168.3.255
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
en0: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV>
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
vboxnet0: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
vboxnet1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255
bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
minikube内部のネットワーク構成は以下の通り。
code:shell
% ssh root@192.168.99.100
# ip a|grep inet
inet 127.0.0.1/8 scope host lo
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic eth0
inet 192.168.99.100/24 brd 192.168.99.255 scope global dynamic eth1
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
Podは、以下のIPアドレスで提供されている。
code:shell
% kubectl describe pods|grep '^IP:'
IP: 172.17.0.5
IP: 172.17.0.2
IP: 172.17.0.6
% kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-minikube-5d9b964bfb-fzgbt 1/1 Running 4 17d
hello-minikube-5d9b964bfb-w8r7t 1/1 Running 4 17d
hello-minikube-5d9b964bfb-z4pwh 1/1 Running 4 17d
% kubectl exec -it hello-minikube-5d9b964bfb-fzgbt /bin/bash
root@hello-minikube-5d9b964bfb-fzgbt:/# apt update
(snip)
root@hello-minikube-5d9b964bfb-fzgbt:/# apt install net-tools
(snip)
root@hello-minikube-5d9b964bfb-fzgbt:/# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:05
inet addr:172.17.0.5 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9372 errors:0 dropped:0 overruns:0 frame:0
TX packets:7201 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:30212728 (30.2 MB) TX bytes:394446 (394.4 KB)
(snip)
root@hello-minikube-5d9b964bfb-w8r7t:/# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02
inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10715 errors:0 dropped:0 overruns:0 frame:0
TX packets:7418 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:30285250 (30.2 MB) TX bytes:406188 (406.1 KB)
(snip)
root@hello-minikube-5d9b964bfb-z4pwh:/# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:06
inet addr:172.17.0.6 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11300 errors:0 dropped:0 overruns:0 frame:0
TX packets:7842 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:30316790 (30.3 MB) TX bytes:429060 (429.0 KB)