일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- cephadm
- Arch
- Ansible
- yum
- Docker
- i3
- HTML
- k8s
- kolla-ansible
- nfs-provisioner
- libvirt
- Octavia
- ubuntu
- ceph
- awx
- kolla
- Kubernetes
- repository
- KVM
- archlinux
- golang
- OpenStack
- pacman
- terraform
- Linux
- grafana-loki
- cloud-init
- ceph-ansible
- port open
- Kubeflow
Archives
- Today
- Total
YJWANG
Kubernetes Network 교육용 본문
작성중
Pod to Pod network
pod 내 인터페이스 > veth > teln > (Route table 참고하여 Other Node 로 이동) > terln > veth > pod 내 인터페이스
kubespray 에서 default로 master node HA되는 법
현재 kubernetes service (api-server)는 10.233.0.1의 주소를 가지고 있고 433을 listen 하고 있다.
[root@master01 ~]# kubectl get svc kubernetes
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.233.0.1 <none> 443/TCP 19h
이는 ipvs로 각 서버에 동일한 IP (10.233.0.1)의 interface가 생기며
6: kube-ipvs0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default
link/ether c6:25:eb:47:61:24 brd ff:ff:ff:ff:ff:ff
ipvs 룰을 통해 각 master node의 api-server의 port로 포워딩된다.
[root@master01 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.233.0.1:443 rr
-> 10.96.90.10:6443 Masq 1 2 0
-> 10.96.90.11:6443 Masq 1 2 0
-> 10.96.90.12:6443 Masq 1 1 0
아래 내용은 예전 버전으로 보인다.. 왜 아직까지 nginx가 있는지는 잘 모르겠다.
AWS등과 같은 Public Cloud와 다르게 bare-metal에서는 LB가 없기에 kubespray는 각 WorkerNode에 nginx proxy로 이용하여 LB를 구성하며 이는 POD 올라간다. Config File은 각 Worker Node 의 /etc/nginx/nginx.conf에 있음
[root@master01 ~]# kubectl get pod -o wide -n kube-system
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
...
nginx-proxy-worker01 1/1 Running 0 9m9s 10.96.90.20 worker01 <none> <none>
nginx-proxy-worker02 1/1 Running 0 9m24s 10.96.90.21 worker02 <none> <none>
그리고 해당 Config File에 보면 각 Node로 Load Balancing 됨을 알 수 있다. (Upstream)
6443은 각 서버에서 실행되고 있는 kube-apiserver이다.
[root@worker01 ~]# cat /etc/nginx/nginx.conf
...
stream {
upstream kube_apiserver {
least_conn;
server 10.96.90.10:6443;
server 10.96.90.11:6443;
server 10.96.90.12:6443;
}
-
[root@master01 ~]# ss -antp |grep 6443
...
LISTEN 0 128 *:6443 *:* users:(("kube-apiserver",pid=40292,fd=7))
이를 이용해서 master node는 HA를 구성한다.
반응형