ááá¯ážáá»á¬ážáá¬áááºááŸáá·áºá¡áá»áŸá áá¯á¶ážá áœá²áá°áá»á¬ážááẠá¡á á¯á¡áá±ážá¡ááœááºáž áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯ááá¯ááºá á±ááẠKubernetes á¡á á¯á¡áá±ážááá¯á· áááºáá±á¬ááºááœáá·áºáá±ážááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž áá±á¬ááºážááá¯áá±ááŒáááº- á¡áá»áá¯á·áá±á¬ áá±áá¬áá±á·á Ạááá¯á·ááá¯áẠáááºáá±á¬ááºááŸá¯ááá¯á· ááá¯ááºááá¯ááºáá»áááºáááºááá¯ááºá á±áááºá á¡á á¯á¡áá±ážá¡ááœááºážááŸá á¡ááá®áá±ážááŸááºážáá»á¬ážááŸáá·áº áá±ááá¹ááá¡ááá®áá±ážááŸááºážáá áºáá¯á¡á¬áž áá»áááºáááºáááº...
á¥ááá¬á¡á¬ážááŒáá·áºá ááá·áºá
ááºá០áááºáá±á¬ááºááŸá¯áá
áºáá¯ááá¯á· áá»áááºáááºááẠááá¯á¡ááºáá«áááºá memcached.staging.svc.cluster.local
. client áá»áááºáááºááá·áº á¡á
á¯á¡áá±ážá¡ááœááºáž VPN ááᯠá¡áá¯á¶ážááŒá¯á á€á
áœááºážáááºááᯠáá»áœááºá¯ááºááá¯á· áá±ážáá±á¬ááºáá«áááºá áááºážááá¯áá¯ááºáá±á¬ááºáááºá áá»áœááºá¯ááºááá¯á·ááẠpodsá áááºáá±á¬ááºááŸá¯áá»á¬ážá subnets áá»á¬ážááá¯ááŒá±ááŒá¬ááŒá®áž cluster DNS ááᯠclient ááá¯á· ááœááºážááá¯á·áá«áááºá áá«ááŒá±á¬áá·áº client á service ááá¯áá»áááºáááºááá¯á·ááŒáá¯ážá
á¬ážáá²á·á¡áá« memcached.staging.svc.cluster.local
áá±á¬ááºážááá¯áá»ááºááẠá¡á
á¯á¡áá±áž DNS ááá¯á·ááœá¬ážááŒá®áž áá¯á¶á·ááŒááºááŸá¯ááŒáá·áº á¡á
á¯ááá¯ááºáááºáá±á¬ááºááŸá¯ááœááºááẠááá¯á·ááá¯áẠáá±á«á·ááºááááºá
á¬á០á€áááºáá±á¬ááºááŸá¯ááááºá
á¬ááᯠáááºáá¶áááŸááááºááŒá
áºáááºá
áá»áœááºá¯ááºááá¯á·ááẠáá°ááááºáá±á¬ááºááŸá¯ subnet ááŒá
áºááá·áº kubeadm ááᯠá¡áá¯á¶ážááŒá¯á K8s á¡á
á¯á¡áá±ážáá»á¬ážááᯠconfigure áá¯ááºáá«áááºá 192.168.0.0/16
, pods áááœááºáááºááẠ10.244.0.0/16
. á¡áá»á¬ážá¡á¬ážááŒáá·áº á¡áá¬á¡á¬ážáá¯á¶áž áá±á¬ááºážááœááºáá±á¬áºáááºáž á¡áá»ááºááŸá
áºáá»áẠááŸááá«áááºá
- ááœááºáááº
192.168.*.*
áá±á¬ááºáááºáá¯á¶ážááœááºáááºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯áá±á·ááŸáááŒá®áž developer home ááœááºáááºáá»á¬ážááœááºáááºáž áááŒá¬ááá¡áá¯á¶ážááŒá¯áááºá ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠáááááá¹ááá»á¬ážááᯠáá¶á á¬ážááááº- á¡áááºáá¯á¶áž router áá»á¬ážááẠဠsubnet ááœáẠá¡áá¯ááºáá¯ááºááŒááŒá®áž VPN ááẠá¡ááá¯áá« subnet áá»á¬ážááᯠcluster á០client ááá¯á· ááœááºážááá¯á·áá«áááºá - áá»áœááºá¯ááºááá¯á·ááœáẠá¡á á¯á¡áá±ážáá»á¬ážá áœá¬ (áá¯ááºáá¯ááºááŸá¯á á¡ááá·áºááŸáá·áº/ááá¯á·ááá¯áẠáá±á¬á·ááºáá²á¡á á¯á¡áá±ážáá»á¬ážá áœá¬) ááŸááááºá ááá¯á·áá±á¬áẠáá¯á¶ááŸááºá¡á¬ážááŒáá·áºá áááºážááá¯á·á¡á¬ážáá¯á¶ážááẠá¡á á¯á¡áá±ážáá»á¬ážááŸáá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááœáẠáá°áá®áá±á¬ subnets áá»á¬áž ááŸááááºááŒá áºááŒá®ážá áááºážááẠá¡á á¯á¡áá±ážáá»á¬ážá áœá¬ááŸá áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº áááŒáá¯ááºáááºáá¯ááºáá±á¬ááºáááºá¡ááœáẠááŒá®ážáá¬ážáá±á¬á¡áááºá¡áá²áá»á¬ážááᯠáááºáá®ážáá±ážáá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠáá°áá®áá±á¬ááá±á¬áá»ááºá¡ááœááºáž áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº pods áá»á¬ážá¡ááœáẠááá°áá®áá±á¬ subnets áá»á¬ážááá¯á¡áá¯á¶ážááŒá¯ááŒááºážá¡áá±á·á¡áá»áá·áºááᯠááŒá¬ááŒáá·áºá áœá¬ááááºážá áááºáá¶áá»áá·áºáá¯á¶ážáá²á·ááẠ- áá±áá¯áá»á¡á¬ážááŒáá·áºá á¡á á¯á¡áá±ážáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠááá°áá®áá±á¬ááœááºáááºáá»á¬ážááŸáá á±áááºá ááá¯á·áá±á¬áºá áááºážááá¯á·ááẠáááºáá±á¬ááºááŸá¯áá»á¬ážá áœá¬á ááŒááºáááºááá¯ááºáᬠá¡ááá®áá±ážááŸááºážáá»á¬áž á áááºááá¯á·ááᯠáá¯ááºáá±á¬ááºáá±á¬ááŒá±á¬áá·áº á¡á á០ááŒááºááááºááá¯áá±á¬ áááºáááºáá±áá±á¬ á¡á á¯á¡áá±áž á¡áá»á¬ážá¡ááŒá¬ážááŸááá«áááºá
ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠááááááá¯ááºááᯠáá±ážáá²á·áááº- ááŸáááŒá®ážáá¬áž á¡á á¯á¡áá±ážáá áºáá¯ááŸá subnet ááᯠáááºááá¯á·ááŒá±á¬ááºážááááºáááºážá
áá¯á¶ážááŒááºáá»ááºáá»á¬ážááŸá¬ááœá±ááŒááºážá
á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶ážá¡áá±á·á¡áá»áá·áºááá±á¬á· ááŒááºáááºáááºáá®ážááŒááºážááŒá
áºáá«áááºá á¡á¬ážáá¯á¶áž ClusterIP á¡áá»áá¯ážá¡á
á¬ážááŒáá·áº áááºáá±á¬ááºááŸá¯áá»á¬ážá ááœá±ážáá»ááºááœáá·áºáá
áºáá¯á¡áá±áá²á·á
á¡á±á¬ááºáá«áá¯ááºáááºážá ááºááœáẠááŒá¿áá¬ááŸááá±áááº- á¡áá¬á¡á¬ážáá¯á¶ážááᯠááŒááºáááºááŒá®ážáá«áá pods áá»á¬ážááẠ/etc/resolv.conf ááŸá DNS nameserver á¡ááŒá ẠIP á¡áá±á¬ááºážáá»á¬áž áá±á«áºáá¬áá«áááºá
ááŒá±ááŸááºážáá»ááºáááŸá¬ááá±ážáá±á¬ááŒá±á¬áá·áºá áá»áœááºá¯ááºááẠkubeadm reset ááŒáá·áº á¡á á¯á¡áá±ážáá áºáá¯áá¯á¶ážááᯠááŒááºáááºáááºááŸááºááŒá®áž áááºážááᯠáááºáá¶ááá·áºááœááºážááááºááŒá áºáá«áááºá
áá«áá±ááá·áº áá«á áá°ááá¯ááºážá¡ááœáẠáááá·áºáá±á¬áºáá«áá°áž... áá»áœááºáá±á¬áºááá¯á·áá²á· ááá á¹á á¡ááœáẠáá±á¬ááºááẠá¡áá±ážá ááẠáááá«ááºážááœá±ááᯠá¡á±á¬ááºááŸá¬ áá±á¬áºááŒááá¯ááºáá«áááºá
- Flannel ááá¯á¡áá¯á¶ážááŒá¯áááº;
- cloud áá»á¬ážááœááºáá±á¬ hardware ááœááºáá« á¡á á¯á¡áá±ážáá»á¬áž ááŸááá«áááºá
- á¡á á¯á¡ááœá²á·á¡ááœááºážááŸá áááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážááᯠááŒááºáááºá¡áá¯á¶ážááŒá¯ááŒááºážááᯠááŸá±á¬ááºááŒááºááá¯áá«áááºá
- áá±áá°áá»á¡á¬ážááŒáá·áº ááŒá¿áᬠá¡áááºážáá¯á¶áž á¡áá±á¡ááœááºááŒáá·áº á¡áá¬áá¬ááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáááºá
- Kubernetes áá¬ážááŸááºážááẠ1.16.6 (ááá¯á·áá±á¬áºá áá±á¬ááºáááºá¡ááá·áºáá»á¬ážááẠá¡ááŒá¬ážáá¬ážááŸááºážáá»á¬ážá¡ááœáẠá¡áá¬ážáá°ááŒá áºáááá·áºáááº)á
- á¡ááááá¬áááºááŸá¬ áááºáá±á¬ááºááŸá¯ subnet ááŒáá·áº kubeadm ááá¯á¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ á¡á
á¯á¡áá±ážáá
áºáá¯ááœáẠáá±áá»á¬á
á±áááºááŒá
áºáááºá
192.168.0.0/16
ááŒáá·áº á¡á á¬ážááá¯ážáá«á172.24.0.0/16
.
ááŒá®ážáá±á¬á· Kubernetes ááŸá¬ áá¬ááœá±áá²á· áááºááᯠááááºážáá¬ážáá²ááá¯áá¬ááᯠááá¯ážá¡áááºááááºážá á áááºáááºáá á¬áž ááŒá áºáá²á·áá¬ááá¯á· á¡á²áá«áá²á· áá¬ááœá± áá¯ááºááá¯á·ááá²... áá®áá±á¬á· áá«ááá¯á· á ááºážá á¬ážáá²á·áááº- "IP ááááºá á¬áá±á¬ááºážáá»á¬áž (subnet) ááᯠá¡áá áºáá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážá etcd ááœáẠáá±áá¬ááᯠááœááºážáá¶áá¯á¶áᬠá¡áááºááŒá±á¬áá·áº ááá¯ááºáá±á¬ááºáááááºážá? »
etcd ááœáẠdata ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡áááºááá·áºáá¯ááºáá¬ážáá±á¬áááááá¬áá»á¬ážááá¯ááŸá¬ááœá±ááŒá®ážáá±á¬ááºá ááŒá¿áá¬ááá¯áá¯á¶ážáááŒá±ááŸááºážáá±ážááá·áºá¡áá¬áá
áºáá¯ááá¯áá»áœááºá¯ááºááá¯á·áááœá±á·ááŸááá«á (á
áá¬ážáá
ááºá etcd ááœáẠdata ááŸáá·áºááá¯ááºááá¯ááºá¡áá¯ááºáá¯ááºáááºáááºááá·áºá¡áá¯á¶ážá¡áá±á¬ááºáá»á¬ážá¡ááŒá±á¬ááºážáááºáááá«áá ááá·áºááºáá»á¬ážááá¯áá»áœááºá¯ááºááá¯á·áááºááá¯ážáá¬ážáá«áááºá) ááá¯á·áá±á¬áº áá±á¬ááºážáá±á¬ á¡á
ááŸááºáá
áºáᯠááŒá
áºáá
ဠutility ááẠáááºááŸááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á etcd ááŸáá·áº áá»áááºáááºááá¯ááºááŒá®áž commands áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá¯áá±áá¬á០áá±áá¬ááᯠáááºááá¯ááºáááºá ls
, get
, dump
.
etcdhelper ááá·áºáá«á
áá±á¬ááºá ááºážá á¬ážáá»ááºááŸá¬ áá¯áá¹ááááŸááá«áááº- "áá±áá¬ááᯠetcd ááœáẠáá±ážááá¯ááºá áœááºážáááºááᯠáá±á«ááºážááá·áºááŒááºážááŒáá·áº ဠutility ááá¯ááá·áºááœááºážááŒááºážá០ááá·áºá¡á¬áž á¡áááºá¡áá¬á áá¬ážáá®ážááááºážá
áááºážááẠáá¯ááºáá±á¬ááºáá»ááºá¡áá
áºááŸá
áºáá¯ááŒáá·áº etcdhelper á ááœááºážáá¶áá¬ážáá±á¬áá¬ážááŸááºážááŒá
áºáá¬áááºá changeServiceCIDR
О changePodCIDR
. áá°ááá¡áá±á«áº áá¯ááºááá¯áááºááŒááºááá¯ááºáááºá
á¡ááºá¹áá«áááºá¡áá
áºáá»á¬ážá áá¬ááá¯áá¯ááºáá±á¬ááºááááºážá Algorithm changeServiceCIDR
:
- deserializer ááá¯áááºáá®ážáá«á
- CIDR ááá¯á¡á á¬ážááá¯ážááẠáá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá áºáá¯ááᯠá á¯á ááºážáá«á
- áá»áœááºá¯ááºááá¯á·ááẠá¡á
á¯á¡áá±ážááŸá ClusterIP á¡áá»áá¯ážá¡á
á¬ážááŒáá·áº áááºáá±á¬ááºááŸá¯á¡á¬ážáá¯á¶ážááᯠááŒááºáááºážáááº-
- etcd á០áááºááá¯ážááᯠGo object áá áºáá¯ááá¯á· áá¯ááºáá±ážáá«á
- áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážááá¯á¡áá¯á¶ážááŒá¯á ááááºá á¬ááááááŸá áºááá¯ááºááᯠá¡á á¬ážááá¯ážáá«á
- áááºáá±á¬ááºááŸá¯ááᯠsubnet á¡áá áºá០IP ááááºá á¬áá áºáᯠáááºááŸááºáá±ážáá«á
- áá¶áá«ááºá ááºáá áºáá¯áááºáá®ážáá«á Go á¡áá¬ááá¹áá¯ááᯠprotobuf á¡ááŒá áºááŒá±á¬ááºážáá«á áá±áá¬á¡áá áºááᯠetcd ááá¯á·áá±ážáá«á
áá¯ááºáá±á¬ááºáá»áẠchangePodCIDR
á¡ááŒá±áá¶á¡á¬ážááŒáá·áº áááºáá°áááºá changeServiceCIDR
- áááºáá±á¬ááºááŸá¯áááºááŸááºáá»ááºááᯠáááºážááŒááºááŒááºážá¡á
á¬ážá áá»áœááºá¯ááºááá¯á·ááẠáááºážááᯠnode á¡ááœáẠááŒá¯áá¯ááºááŒá®áž ááŒá±á¬ááºážáá²áá«áááºá .spec.PodCIDR
subnet á¡áá
áºáá
áºáá¯ááá¯á·
á¡áá±á·á¡áá»áá·áº
áááºáá±á¬ááºááŸá¯ CIDR ááá¯ááŒá±á¬ááºážáá«á
áá¯ááºáááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠá¡á á®á¡á á¥áºááẠá¡ááœááºááá¯ážááŸááºážáá±á¬áºáááºáž á¡á á¯á¡áá±ážááŸá pods á¡á¬ážáá¯á¶ážááᯠááŒááºáááºáááºáá®ážááá·áºá¡áá»áááºááœáẠáááºážááœáẠá ááºáááºáá±áá«áááºá áááºáá¡ááá·áºáá»á¬ážááᯠáá±á¬áºááŒááŒá®ážáá±á¬ááºá áá®á¡áá¯áá®á¡á á€á ááºáááºáá»áááºááᯠáááºáá²á·ááá¯á· áá»áŸá±á¬á·áá»ááá¯ááºáááºááá¯ááá·áº á¡ááœá±ážá¡ááŒááºáá»á¬ážááá¯áááºáž áá»áŸáá±áá«áááºá
ááŒáá¯áááºááŒááºáááºááŸá¯ á¡ááá·áºáá»á¬áž-
- ááá¯á¡ááºáá±á¬áá±á¬á·ááºáá²ááºááá¯áááºáááºááŒááºážááŸáá·áº patched etcdhelper ááá¯áááºáááºááŒááºážá
- á¡áááºááááºážááŒááºáž etcd ááŸáá·áº
/etc/kubernetes
.
áááºáá±á¬ááºááŸá¯CIDR ááŒá±á¬ááºážáá²ááŒááºážá¡ááœáẠá¡ááá¯áá»á¯á¶ážáá¯ááºáá±á¬ááºáá»ááºá¡á á®á¡á ááº-
- apiserver ááŸáá·áº controller-manager ááá¯ááŒá±á¬ááºážáá²ááŒááºážáá±á¬áºááŒáááºá
- áááºááŸááºáá»á¬ážááŒááºáááºáá¯ááºáá±ážááŒááºážá
- etcd ááœáẠClusterIP áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠááŒá±á¬ááºážáá²ááŒááºážá
- á¡á á¯á¡áá±ážááŸá pods á¡á¬ážáá¯á¶ážááᯠááŒááºáááºá áááºáá«á
á¡á±á¬ááºáá«ááá¯á·ááẠá¡áá±ážá áááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá ááŒá®ážááŒáá·áºá á¯á¶áá±á¬ á¡ááá¯ááºážááŒá áºáááºá
1. data dump á¡ááœáẠetcd-client ááᯠááá·áºááœááºážáá«-
apt install etcd-client
2. etcdhelper ááá¯áááºáá±á¬ááºáá«-
- Golang ááᯠááá·áºááœááºážáá«
GOPATH=/root/golang mkdir -p $GOPATH/local curl -sSL https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz | tar -xzvC $GOPATH/local echo "export GOPATH="$GOPATH"" >> ~/.bashrc echo 'export GOROOT="$GOPATH/local/go"' >> ~/.bashrc echo 'export PATH="$PATH:$GOPATH/local/go/bin"' >> ~/.bashrc
- áá«ááá¯á·á ááá¯áá·áºá¡ááœáẠáá»ááºážáá¬áááºá
etcdhelper.go
ááŸá®ááá¯ááŸá¯áá»á¬ážá¡á¬áž áá±á«ááºážáá¯ááºáá¯ááºáá«á á á¯áá±á¬ááºážáá«-wget https://raw.githubusercontent.com/flant/examples/master/2020/04-etcdhelper/etcdhelper.go go get go.etcd.io/etcd/clientv3 k8s.io/kubectl/pkg/scheme k8s.io/apimachinery/pkg/runtime go build -o etcdhelper etcdhelper.go
3. etcd á¡áááºáá°ážáá°áá«-
backup_dir=/root/backup
mkdir ${backup_dir}
cp -rL /etc/kubernetes ${backup_dir}
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/etcd/server.key --cert=/etc/kubernetes/pki/etcd/server.crt --endpoints https://192.168.199.100:2379 snapshot save ${backup_dir}/etcd.snapshot
4. Kubernetes ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºáá±á¬áºááŒáá»ááºáá»á¬ážááŸá áááºáá±á¬ááºááŸá¯ááœá²ááœááºáááºááᯠááŒá±á¬ááºážáá«á ááᯠ/etc/kubernetes/manifests/kube-apiserver.yaml
О /etc/kubernetes/manifests/kube-controller-manager.yaml
parameter ááá¯ááŒá±á¬ááºážáá«á --service-cluster-ip-range
ááœááºáááºááœá²á¡áá
áºááá¯á· 172.24.0.0/16
á¡á
á¬áž 192.168.0.0/16
.
5. áá»áœááºá¯ááºááá¯á·ááẠapiserver (á¡áá«á¡áááº) á¡ááœáẠkubeadm áá¯ááºáá±ážááá·áº áááºááŸááºáá»á¬ážáá¯ááºáá±ážááá·áº áááºáá±á¬ááºááŸá¯ subnet ááᯠááŒá±á¬ááºážáá²áá±áá±á¬ááŒá±á¬áá·áº áááºážááá¯á·ááᯠááŒááºáááºáá¯ááºáá±ážááẠááá¯á¡ááºáááº-
- áááºááŸááááºááŸááºáá¯ááºáá±ážáá¬ážááá·áº áááºááá·áºááá¯ááááºážáá»á¬ážááŸáá·áº IP ááááºá
á¬áá»á¬ážááᯠááŒáá·áºááŒá
áá¯á·-
openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt X509v3 Subject Alternative Name: DNS:dev-1-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, DNS:apiserver, IP Address:192.168.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
- kubeadm á¡ááœáẠá¡áááºážáááºáá±á¬ config ááᯠááŒááºáááºááŒáá«á
áá¯á·á
cat kubeadm-config.yaml apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration networking: podSubnet: "10.244.0.0/16" serviceSubnet: "172.24.0.0/16" apiServer: certSANs: - "192.168.199.100" # IP-аЎÑÐµÑ ÐŒÐ°ÑÑÐµÑ Ñзла
- Crt ááŸáá·áº áá±á¬á·á¡áá±á¬ááºážááᯠáá»ááºááá¯ááºáá¡á±á¬ááºá á¡á²áá«áááŸáááẠáááºááŸááºá¡áá
áºá áá¯ááºááŸá¬ááá¯ááºáá°ážá
rm /etc/kubernetes/pki/apiserver.{key,crt}
- API áá¬áá¬á¡ááœáẠáááºááŸááºáá»á¬ážááᯠááŒááºáááºáá¯ááºáá±ážááŒáá«á
áá¯á·á
kubeadm init phase certs apiserver --config=kubeadm-config.yaml
- subnet á¡áá
áºá¡ááœáẠáááºááŸááºááᯠáá¯ááºáá±ážáá¬ážááŒá±á¬ááºáž á
á
áºáá±ážááŒáá«á
áá¯á·á
openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt X509v3 Subject Alternative Name: DNS:kube-2-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:172.24.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
- API áá¬áá¬á¡ááá¡ááŸááºááŒá¯áááºááŸááºááᯠááŒááºáááºáá¯ááºáá±ážááŒá®ážáá±á¬ááºá áááºážáááœááºááááºáá¬ááᯠááŒááºáááºá
áááºáá«á
docker ps | grep k8s_kube-apiserver | awk '{print $1}' | xargs docker restart
- config ááᯠááŒááºáá¯ááºááŒáá·áºáá¡á±á¬ááº
admin.conf
:kubeadm alpha certs renew admin.conf
- áá±áá¬ááᯠetcd ááœááºáááºážááŒááºááŒáá«á
áá¯á·á
./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-service-cidr 172.24.0.0/16
ááááá±ážááŒááºáž! ááá¯á¡áá»áááºááœááºá ááŸáááŒá®ážáá¬áž pods áá»á¬ážááœááºááŒá áºáá±á¬ááŒá±á¬áá·áº domain resolution ááẠcluster ááœáẠá¡áá¯ááºááá¯ááºáá±á¬á·áá«á
/etc/resolv.conf
CoreDNS ááááºá á¬áá±á¬ááºáž (kube-dns) ááᯠá á¬áááºážááœááºážáá¬ážááŒá®áž kube-proxy ááẠiptables á ááºážáá»ááºážáá»á¬ážááᯠsubnet á¡áá±á¬ááºážá០á¡áá áºááá¯á· ááŒá±á¬ááºážáá²áá«áááºá áá±á¬ááºááẠáá±á¬ááºážáá«ážááœáẠá ááºáááºáá»áááºááᯠáá»áŸá±á¬á·áá»ááẠááŒá áºááá¯ááºáá±á¬ ááœá±ážáá»ááºááŸá¯áá»á¬ážá¡ááŒá±á¬ááºáž áá±ážáá¬ážáá¬ážáááºá - namespace ááœáẠConfigMap ááá¯ááŒááºááŒáá«á
áá¯á·
kube-system
:kubectl -n kube-system edit cm kubelet-config-1.16
- áá®áá±áá¬ááŸá¬ á¡á á¬ážááá¯ážáá«á
clusterDNS
kube-dns áááºáá±á¬ááºááŸá¯á IP ááááºá á¬á¡áá áºááá¯á·-kubectl -n kube-system get svc kube-dns
.kubectl -n kube-system edit cm kubeadm-config
- áá«ááá¯á· ááŒááºáá±ážáááºá
data.ClusterConfiguration.networking.serviceSubnet
subnet á¡áá áºáá áºáá¯ááá¯á· - kube-dns ááááºá
á¬ááŒá±á¬ááºážááœá¬ážáá±á¬ááŒá±á¬áá·áº node á¡á¬ážáá¯á¶ážááœáẠkubelet config ááᯠá¡ááºááááºáá¯ááºááẠááá¯á¡ááºáááº-
kubeadm upgrade node phase kubelet-config && systemctl restart kubelet
- áá»ááºáááºááŸá¬ á¡á
á¯á¡áá±ážááŸá pods á¡á¬ážáá¯á¶ážááᯠááŒááºáááºá
áááºáááºááŒá
áºáááº-
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(S+)s+(S+).*/kubectl --namespace 1 delete pod 2/e'
á ááºáááºáá»áááºááᯠáá»áŸá±á¬á·áá»áá«á
á ááºáááºáá»áááºááᯠáááºáá²á·ááá¯á· áá»áŸá±á¬á·áá»ááááºááᯠá ááºážá á¬ážá áá¬áá»á¬áž
- ááááºážáá»á¯ááºááŸá¯áá±áá¬ááºááᯠááŒá±á¬ááºážáá²ááŒá®ážáá±á¬ááºá á¥ááá¬á kube-dns áááºáá±á¬ááºááŸá¯á¡áá
áºáá
áºáᯠáááºáá®ážáá«á
kube-dns-tmp
ááŸáá·áº ááááºá á¬á¡áá áº172.24.0.10
. - á¡á±á¬ááº
if
kube-dns áááºáá±á¬ááºááŸá¯ááᯠááœááºážáá¶áááºááá¯ááºááá·áº etcdhelper ááœááºá - kubelets á¡á¬ážáá¯á¶ážááœáẠááááºá
á¬ááᯠá¡á
á¬ážááá¯ážáá«á
ClusterDNS
áááºáá±á¬ááºááŸá¯á¡áá±á¬ááºážááẠá¡áá áºáá áºáá¯ááŸáá·áº áá áºááŒáá¯ááºááẠáááºáááºáá¯ááºáá±á¬ááºáá±áá»áááºááœáẠá¡áá áºáá áºáá¯ááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáááºááŒá áºáááºá - á¡ááá®áá±ážááŸááºážáá»á¬ážáá«ááŸááá±á¬ á¡á á±á·áá»á¬ážááẠááá¬áá¡ááŒá±á¬ááºážáá»á¬ážááŒá±á¬áá·áº ááá¯á·ááá¯áẠááá±á¬áá°áá¬ážááá·áºá¡áá»áááºá áááºážááá¯á·ááá¯ááºááá¯áẠááááºááœá¬ážáááºá¡áá á á±á¬áá·áºáá«á
- áááºáá±á¬ááºááŸá¯ááá¯áá»ááºáá«á
kube-dns-tmp
ááŒá±á¬ááºážáá²áá«áserviceSubnetCIDR
kube-dns áááºáá±á¬ááºááŸá¯á¡ááœááºá
á€á¡á
á®á¡á
á¥áºááẠáááºáá±á¬ááºááŸá¯áááºááŸá¬ážááá·áºááŒá¬áá»áááºá¡ááœáẠááá·áºá¡á¬áž á
ááºáááºáá»ááẠ~ áá
áºáááá
áºá¡áá áá»áŸá±á¬á·áá»ááá¯ááºá
á±áááºááŒá
áºáááºá kube-dns-tmp
áááºáá±á¬ááºááŸá¯á¡ááœáẠsubnet ááá¯ááŒá±á¬ááºážáá«á kube-dns
.
ááŒá¯ááŒááºááŒá±á¬ááºážáá²áá±áž podNetwork
áá áºáá»áááºáááºážááŸá¬áááºá áá»áœááºá¯ááºááá¯á·ááẠáááŸááá¬áá±á¬ etcdhelper ááᯠá¡áá¯á¶ážááŒá¯á podNetwork ááᯠááœááºážáá¶áááºážááᯠááŒáá·áºááẠáá¯á¶ážááŒááºáá²á·áááºá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá á¡ááá·áºááá·áºááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºáááºá
- configs áá»á¬ážááᯠááŒááºáááºááŒááºážá
kube-system
; - kube-controller-manifest ááᯠááŒááºáááºááŒááºážá
- podCIDR ááᯠetcd ááœáẠááá¯ááºááá¯ááºááŒá±á¬ááºážáá«á
- cluster node á¡á¬ážáá¯á¶ážááᯠááŒááºáááºá áááºáá«á
ááᯠá€áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážá¡ááŒá±á¬ááºáž áá±á¬ááºáááº
1. Namespace ááœáẠConfigMap ááᯠááŒá¯ááŒááºáá«á kube-system
:
kubectl -n kube-system edit cm kubeadm-config
- ááŒá¯ááŒááºááŒááºážá data.ClusterConfiguration.networking.podSubnet
subnet á¡áá
áºáá
áºáá¯ááá¯á· 10.55.0.0/16
.
kubectl -n kube-system edit cm kube-proxy
- ááŒá¯ááŒááºááŒááºážá data.config.conf.clusterCIDR: 10.55.0.0/16
.
2. ááááºážáá»á¯ááºáá°-áááºáá±áá»á¬ áááºáá®ážáááºá áºááᯠááœááºážáá¶ááŒááºáááºáá«-
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
- ááŒá¯ááŒááºááŒááºážá --cluster-cidr=10.55.0.0/16
.
3. áááºááŸááááºááá¯ážáá»á¬ážááá¯ááŒáá·áºáá«á .spec.podCIDR
, .spec.podCIDRs
, .InternalIP
, .status.addresses
á¡á
á¯á¡áá±ážá¡á¬ážáá¯á¶ážá¡ááœááº-
kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'
[
{
"name": "kube-2-master",
"podCIDR": "10.244.0.0/24",
"podCIDRs": [
"10.244.0.0/24"
],
"InternalIP": "192.168.199.2"
},
{
"name": "kube-2-master",
"podCIDR": "10.244.0.0/24",
"podCIDRs": [
"10.244.0.0/24"
],
"InternalIP": "10.0.1.239"
},
{
"name": "kube-2-worker-01f438cf-579f9fd987-5l657",
"podCIDR": "10.244.1.0/24",
"podCIDRs": [
"10.244.1.0/24"
],
"InternalIP": "192.168.199.222"
},
{
"name": "kube-2-worker-01f438cf-579f9fd987-5l657",
"podCIDR": "10.244.1.0/24",
"podCIDRs": [
"10.244.1.0/24"
],
"InternalIP": "10.0.4.73"
}
]
4. etcd ááá¯á· ááá¯ááºááá¯áẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž ááŒá¯áá¯ááºááŒááºážááŒáá·áº podCIDR ááᯠá¡á á¬ážááá¯ážáá«-
./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-pod-cidr 10.55.0.0/16
5. podCIDR ááẠá¡ááŸááºáááẠááŒá±á¬ááºážáá²ááœá¬ážááŒá±á¬ááºáž á á áºáá±ážááŒáá·áºááŒáá«á áá¯á·á
kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'
[
{
"name": "kube-2-master",
"podCIDR": "10.55.0.0/24",
"podCIDRs": [
"10.55.0.0/24"
],
"InternalIP": "192.168.199.2"
},
{
"name": "kube-2-master",
"podCIDR": "10.55.0.0/24",
"podCIDRs": [
"10.55.0.0/24"
],
"InternalIP": "10.0.1.239"
},
{
"name": "kube-2-worker-01f438cf-579f9fd987-5l657",
"podCIDR": "10.55.1.0/24",
"podCIDRs": [
"10.55.1.0/24"
],
"InternalIP": "192.168.199.222"
},
{
"name": "kube-2-worker-01f438cf-579f9fd987-5l657",
"podCIDR": "10.55.1.0/24",
"podCIDRs": [
"10.55.1.0/24"
],
"InternalIP": "10.0.4.73"
}
]
6. cluster node á¡á¬ážáá¯á¶ážááᯠáá áºáá¯ááŒá®ážáá áºáᯠááŒááºááœáá·áºááŒáá«á áá¯á·á
7. á¡áááºážáá¯á¶áž node áá áºáá¯áá¬ážáá²á·áá«á podCIDR á¡áá±á¬ááºážááá¯á·áá±á¬áẠkube-controller-manager ááẠá áááºááá¯ááºáááºááá¯ááºáá«á ááŸáá·áº á¡á á¯á¡áá±ážááŸá pods áá»á¬ážááᯠá á®á ááºáá¬ážáááºááá¯ááºáá«á
ááááºáá±á¬á·á podCIDR ááá¯ááŒá±á¬ááºážáá²ááŒááºážá ááá¯ááá¯ááá¯ážááŸááºážá
áœá¬áá¯ááºáá±á¬ááºááá¯ááºááẠ(á¥ááá¬á spec.clusterIP
.)
ááááº
áá±á¬ááºážáá«ážááẠetcd ááœáẠdata ááŸáá·áºá¡áá¯ááºáá¯ááºáááºááŒá áºááá¯ááºááŒá±ááá¯ááá¯ááºááá¯ááºááœá±ážááœá±ážáá¬ážáááºá i.e. Kubernetes API ááᯠáá»á±á¬áºááŒááºááŒááºážá áá áºáá«áá áºáá¶ááœáẠá€áááºážáááºážááẠááá·áºá¡á¬áž "áááºážáá»ááºáá±á¬á¡áá¬áá»á¬áž" áá¯ááºááá¯ááºá á±áááºá á á áºááŸááºáá±á¬ K8s á¡á á¯á¡áá±ážáá»á¬ážááœáẠá á¬áá¬ážáá«ááŸáááá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· á ááºážáááºáá²á·áááºá ááá¯á·áá±á¬áºáááºáž áá»ááºáá»ááºááŒáá·áºááŒáá·áº á¡áá¯á¶ážááŒá¯ááẠáááºážááá¯á·á á¡áááºááá·áºá¡áá±á¡áá¬ážááŸá¬ ááŸááá±áááºá PoC (á¡áá°á¡áá¡áá±á¬ááºá¡áá¬áž). ááá¯á·ááŒá±á¬áá·áºá áááºááẠáááºáá¡á á¯á¡áá±ážáá»á¬ážáá±á«áºááœáẠetcdhelper utility áááœááºážáá¶áá¬ážáá±á¬áá¬ážááŸááºážááᯠá¡áá¯á¶ážááŒá¯ááá¯áá«áá ááá·áºááá¯ááºááá¯ááºá¡áá¹ááá¬ááºááŒáá·áº áá¯ááºáá±á¬ááºáá«á
PS
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááœááºáááºážáááºáá«
- «
etcd 3.4.3- ááá¯ááŸá±á¬ááºááŸá¯ áá¯á¶ááŒááºá áááºáá»áááŸá¯ááŸáá·áº áá¯á¶ááŒá¯á¶áá±ážáá±á·áá¬ááŸá¯ "; - «
Kubernetes ááŸá ááœááºáááºáá»áááºáááºááŸá¯á¡ááœáẠCalico- ááááºáááºááŒááºážááŸáá·áº á¡ááœá±á·á¡ááŒá¯á¶á¡áááºážááẠ"; - «
Kubernetes áááºáááºááŸá¯ááœáẠáá»á±á¬áºááŒá±áá±ážá áá Ạáá»áá¯á·ááœááºážáá»áẠ6 áᯠ[ááŸáá·áº áááºážááá¯á·á ááŒá±ááŸááºážáá»ááº] "; - «
Kubernetes ááŒá¿áá¬ááŒá±ááŸááºážááŒááºážá¡ááœáẠá¡ááŒááºá¡á¬áá¯á¶áááºážááœáŸáẠ"á
source: www.habr.com