Kubeadm 部署3节点kubernetes 1.15(墙外环境)
国内环境请参考:
(k8s第一步:)[https://www.cnblogs.com/fanqisoft/p/11498049.html]
(k8s第二步:)[https://www.cnblogs.com/fanqisoft/p/11498217.html]
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。
已经发布的Kubernetes 1.15中,kubeadm对HA集群的配置已经达到beta可用,说明kubeadm距离生产环境中可用的距离越来越近了。
第一步
三节点分别对应设置系统主机名
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node1
hostnamectl set-hostname k8s-node2
三节点都添加hosts解析
cat >> /etc/hosts <<EOF
192.168.1.85 k8s-master
192.168.1.38 k8s-node1
192.168.1.119 k8s-node2
EOF
三节点都安装依赖包
yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
三节点都设置防火墙为Iptables 并设置空规则
systemctl stop firewalld && systemctl disable firewalld
yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptalbes save
三节点都关闭swap虚拟内存和禁用SELINUX
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
三节点都调整内核参数,对于k8s
cat > /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-iptables=1 # 将桥接的IPv4流量传递到iptables的链中
net.bridge.bridge-nf-call-ip6tables=1 # 将桥接的IPv4流量传递到iptables的链中
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1 # 禁用ipv6
net.netfilter.nf_conntrack_max=2310720
EOF
执行下面命令让上面的文件生效
sysctl -p /etc/sysctl.d/kubernetes.conf
三节点都设置rsyslogd和systemd journald
mkdir /var/log/journal # 持久化保存日志的目录
mkdir /etc/systemd/journald.conf.d
cat > /etc/systemd/journald.conf.d/99-prophet.conf <<EOF
[Journal]
# 持久化保存到磁盘
Storage=persistent
# 压缩历史日志
Compress=yes
SyncIntervalSec=5m
RateLimitInterval=30s
RateLimitBurst=1000
# 最大占用空间 10G
SystemMaxUse=10G
# 单日志文件最大 200M
SystemMaxFileSize=200M
# 日志保存时间 2 周
MaxRetentionSec=2week
# 不将日志转发到 syslog
ForwardToSyslog=no
EOF
重启 systemd-journald 服务
systemctl restart systemd-journald
我的三节点是远程机房,不宜重启,暂时没有升级内核为4.44.还是3.10内核,由于自己测试环境,自己玩就没有做升级内核的操作,对于在虚拟机上搭建的集群,可以升级内核,按照下面的操作进行,设置后,需要重启。重启后使用uname -r查看内核版本。
<!----
升级系统内核为4.44
Centos7.x系统自带的3.10.x内核存在一些Bugs,导致运行的Docker、Kubernetes不稳定,例如:
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装一次
yum --enablerepo=elrepo-kernel install -y kernel-lt
# 设置开机从新内核启动
grub2-set-default "CentOS Linux (4.4.202-1.el7.elrepo.x86_64) 7 (Core)"
# 重启后安装内核源文件
yum --enablerepo=elrepo-kernel install kernel-lt-devel-$(uname -r) kernel-lt-headers-$(uname -r)
---->
kube-proxy(主要解决SVC与POD之间的调度关系)开启ipvs(负载均衡能力更强)的前置条件
为了使用ipvs,而不是iptables来进行路由规则的创建,需要安装一些ipvs的依赖
三节点都执行
yum -y install ipset ipvsadm
三节点都执行,由于ipvs已经加入到了内核的主干,所以为kube-proxy开启ipvs的前提需要加载以下的内核模块:
modprobe br_netfilter
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
上面脚本创建了的/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。 使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4
命令查看是否已经正确加载所需的内核模块。
要确保各个节点上已经安装了ipset软件包 yum -y install ipset ,为了便于查看ipvs的代理规则,最好还要确认是否安装了管理工具ipvsadm,yum -y install ipvsadm ipset
。
如果以上前提条件如果不满足,则即使kube-proxy的配置开启了ipvs模式,也会退回到iptables模式。
三节点都安装Docker
Kubernetes从1.6开始使用CRI(Container Runtime Interface)容器运行时接口。默认的容器运行时仍然是Docker,使用的是kubelet中内置dockershim CRI实现
三节点都执行
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
--查看最新的docker版本,以k8s-master节点为例:--
[root@k8s-master ~]# yum list docker-ce.x86_64 --showduplicates |sort -r
Kubernetes 1.15当前支持的docker版本列表是1.13.1, 17.03, 17.06, 17.09, 18.06, 18.09,这里在各节点安装docker的18.09.7版本。
yum makecache fast
yum install -y --setopt=obsoletes=0 \
docker-ce-18.09.7-3.el7
# 启动docker,同时设置开机自启动
systemctl start docker && systemctl enable docker
确认一下iptables filter表中FOWARD链的默认策略(pllicy)为ACCEPT。
三节点都执行(以k8s-node1为例:)
[root@k8s-node1 ~]# iptables -nvL
----省略--------
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
----省略--------
三节点都修改docker cgroup driver为systemd
根据文档CRI installation中的内容,对于使用systemd作为init system的Linux的发行版,使用systemd作为docker的cgroup driver可以确保服务器节点在资源紧张的情况更加稳定,因此这里修改各个节点上docker的cgroup driver为systemd。
创建或修改/etc/docker/daemon.json:
cat >/etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
mkdir -p /etc/systemd/system/docker.service.d/
三节点都重新加载docker配置文件,启动docker,设置开机自启动:
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
可以查看docker安装信息,以k8s-node1为例:
[root@k8s-node1 ~]# docker info
第二步kubeadm安装部署K8S
使用Kubeadm部署Kubernetes
安装kubeadm和kubelet
三节点上都安装kubeadm 和kubelet,由于墙外环境,不需要修改官方K8S的yum源,就是用google k8s.gcr源。墙内环境,需要用阿里云的yum源,或者指定自己搭建的企业级DOCKER Registry仓库harbor(要保证仓库中你已经上传这些组件的镜像哦),在初始化的时候kubeadm init需要加入–image参数,或者在配置文件kubeadmin-config.yaml
指定阿里云镜像仓库地址registry.aliyuncs.com/google_containers
。默认是谷歌的:imageRepository: k8s.gcr.io
下面是添加k8s的yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
测试地址https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64是否可用,如果不可用需要科学上网。
由于我们墙外环境,所以就不存在科学上网了这一说法,哈哈哈
(我们省略这部,测试也没关系,会访问网页内容滴)
curl https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
三节点都安装kubelet-1.15.1、kubeadm-1.15.1、kubectl-1.15.1
yum makecache fast
yum install -y kubelet-1.15.1 kubeadm-1.15.1 kubectl-1.15.1
从安装结果可以看出还安装了 cri-tools, kubernetes-cni, socat 三个依赖:
- 官方从Kubernetes 1.14开始将cni依赖升级到了0.7.5版本
- socat是kubelet的依赖
- cri-tools是CRI(Container Runtime Interface)容器运行时接口的命令行工具
由于kubelet需要和容器接口交互,启动我们的容器,而我们的k8s通过kubeadm安装出来以后都是以Pod的方式存在,也就是底层以容器的方式运行,所以kubelet一定要开机自启的,否则重启后我们k8s集群可能起不来。
三节点都执行
systemctl enable kubelet.service
初始化主节点k8s-master
使用kubeadm config print init-defaults
可以打印集群初始化默认需要使用的配置文件,对配置文件部分修改之后我们kubeadm init
初始化集群时需要用到这个配置文件:
[root@k8s-master root] cd /usr/local/install-k8s/core
[root@k8s-master core]# kubeadm config print init-defaults
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 1.2.3.4 # 默认为1.2.3.4修改为本机内网IP 192.168.1.85
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: k8s-master
taints:
- effect: NoSchedule # master节点不负责pod的调度,也就是master节点不充当work节点的角色
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io # 默认安装镜像组件拉取的镜像源仓库地址
kind: ClusterConfiguration
kubernetesVersion: v1.16.0 # 注意:生成配置文件和我们要安装的k8s版本不同,需要为v1.15.1
networking:
dnsDomain: cluster.local
podSubnet: "10.244.0.0/16" # 新增pod的网段,默认的配置文件是没有这个pod子网的,我们新增它,如果不新增,需要在初始化指定pod的子网段
serviceSubnet: 10.96.0.0/12 # SVC的子网
scheduler: {}
kubeProxy:
config:
featureGates:
SupportIPVSProxyMode: true
mode: ipvs
k8s-master1上执行,生成kubeadm初始化配置文件kubeadm-config.yaml,根据上面进行部分修改。
kubeadm config print init-defaults > kubeadm-config.yaml
在进行初始化之前,我们可以先查看一下kubeadm部署k8s1.15.1需要哪些镜像。
[root@k8s-master ~]# kubeadm config images list --kubernetes-version=1.15.1
k8s.gcr.io/kube-apiserver:v1.15.1
k8s.gcr.io/kube-controller-manager:v1.15.1
k8s.gcr.io/kube-scheduler:v1.15.1
k8s.gcr.io/kube-proxy:v1.15.1
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
# 如果你是科学上网或者墙外环境,你可以先把这些镜像pull到master节点上,这样在进行初始化的时候就比较快了,本地有镜像了,就不需要去远程仓库拉取了
使用上面生成配置文件在master节点上进行初始化,这个kubeadm-init.log日志记录着node节点加入集群中的方式,不过也可以通过命令kubeadm token create --print-join-command
找到这个加入集群方式的
kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
使用指定的yaml文件进行初始化安装,自动颁发证书(v1.13后支持)把所有的信息都写入到 kubeadm-init.log中,其中–experimental-upload-certs 这个参数在最新版中已经被弃用了,官方推荐使用 –upload-certs 替代,官方公告:。
kubeadm-init.log
中记录了完成的初始化输出的内容,根据输出的内容基本上可以看出手动初始化安装一个Kubernetes集群所需要的关键步骤。 其中有以下关键内容:
- init:指定版本进行初始化操作
- preflight:初始化前的检查和下载所需要的 Docker 镜像文件
- kubelet-start:生成 kubelet 的配置文件 var/lib/kubelet/config.yaml,没有这个文件 kubelet 无法启动,所以初始化之前的 kubelet 实际上启动不会成功
- certificates:生成 Kubernetes 使用的证书,存放在 /etc/kubernetes/pki 目录中
- kubeconfig:生成 KubeConfig 文件,存放在 /etc/kubernetes 目录中,组件之间通信需要使用对应文件
- control-plane:使用 /etc/kubernetes/manifest 目录下的 YAML 文件,安装 Master 组件
- etcd:使用 /etc/kubernetes/manifest/etcd.yaml 安装 Etcd 服务
- wait-control-plane:等待 control-plan 部署的 Master 组件启动
- apiclient:检查 Master 组件服务状态。
- uploadconfig:更新配置
- kubelet:使用 configMap 配置 kubelet
- patchnode:更新 CNI 信息到 Node 上,通过注释的方式记录
- mark-control-plane:为当前节点打标签,打了角色 Master,和不可调度标签,这样默认就不会使用 Master 节点来运行 Pod
- bootstrap-token:生成 token 记录下来,后边使用 kubeadm join 往集群中添加节点时会用到
- addons:安装附加组件 CoreDNS 和 kube-proxy
初始化完成后需要的工作,还是k8s-master1节点上
在当前的用户(我用的root)的Home目录下创建.kube目录(这个目录中保存我们的连接配置,kubectl和kube-Api进行https通讯,所以有一些缓存需要保存以及一些认证文件)
mkdir -p $HOME/.kube
拷贝集群管理员的配置文件到这个目录下
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
授予权限(所有者 所有组授予当前的用户)
sudo chown $(id -u):$(id -g) $HOME/.kube/config
查看 k8s 节点状态
[root@k8s-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master NotReady master 7m46s v1.15.1
此时主节点状态为NotReady,因为我们k8s集群要求一个扁平化的网络存在,由于我们还没构建flanneld网络插件。
下载flannel yaml文件
[root@k8s-master root] cd /usr/local/install-k8s/plugin/flannel
[root@k8s-master flannel] wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
创建flannel
[root@k8s-master flannel]# kubectl create -f kube-flannel.yml
[root@k8s-master flannel]# kubectl get pod -n kube-system # -n 命名空间
此时查看node状态应该为Ready状态
[root@k8s-master flannel]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 23m v1.15.1
查看一下集群状态,确认个组件都处于healthy状态:
kubectl get cs
[root@k8s-master flannel]# kubectl get cs
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health":"true"}
获得kubeadm join
命令参数方式有两种:
1 在我们上面kubeadm init
初始化的那个kubeadm-init.log日志中也可以找到。
2 k8s-master 节点上执行下面命令。
kubeadm token create --print-join-command
在k8s-node1和k8s-node2上分别执行加入节点的命令:
kubeadm join 192.168.1.85:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:d3a817068b75095f3616f5dd029ee40960ab851a48162fc5e4a0808b8d786ad2
在k8s-master节点上查看:
[root@k8s-master flannel]# kubectl get pod -n kube-system -o wide # 可以在wide加入-w参数
此时查看node节点应该有3个,但子节点状态为notReady,等待子节点的flannel初始化完成即可。
[root@k8s-master flannel]# kubectl get nodes
*如果子节点执行加入主节点的命令报错的话,可以尝试执行kubeadm reset命令后重试
移除node节点以及之后的重新加入:
k8s-master节点上执行:
kubectl delete node k8s-node2
在k8s-node2节点上执行:
kubeadm reset
ifconfig cni0 down
ip link delete cni0
ifconfig flannel.1 down
ip link delete flannel.1
rm -rf /var/lib/cni/
重新是node节点加入集群
如果我们忘记了Master节点的token,可以使用下面的命令来看:
kubeadm token list
[root@k8s-master core]# kubeadm token list
TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
5q91af.st35qitumttcwp7e <invalid> 2019-11-23T16:22:16+08:00 <none> Proxy for managing TTL for the kubeadm-certs secret <none>
abcdef.0123456789abcdef <invalid> 2019-11-24T14:22:16+08:00 authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
uw6dfy.cye0w06s06dms8q8 4h 2019-11-25T17:59:15+08:00 authentication,signing <none> system:bootstrapp
默认情况下,token的有效期是24小时,如果token已经过期的话,可以使用以下命令重新生成:
kubeadm token create
如果你找不到–discovery-token-ca-cert-hash的值,可以使用以下命令生成:
[root@master] ~$ openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
7845e6615fcae889eedd6fe55174d904ddd4d3ca5257f04c4438cc67cf06ba58
除了上面通过两次命令找token和hash,也可以直接一次性执行如下命令来获取:
kubeadm token create --print-join-command
补充:如果你部署好后kube-proxy使用的还是iptables模式,这时需要修改为ipvs模式
[root@k8s-master ~]# kubectl get configmap -n kube-system
NAME DATA AGE
coredns 1 24d
els1.v1 1 8d
extension-apiserver-authentication 6 24d
flu1.v1 1 8d
kib1.v1 1 8d
kube-flannel-cfg 2 24d
kube-proxy 2 24d
kubeadm-config 2 24d
kubelet-config-1.15 1 24d
kubernetes-dashboard-settings 1 4d23h
kubernetes-dashboard.v1 1 10d
myfirst-release.v1 1 10d
unsung-clam.v1 1 10d
[root@k8s-master ~]# kubectl get pods -n kube-system |grep proxy
kube-proxy-6sp4j 1/1 Running 0 24d
kube-proxy-hbnkf 1/1 Running 0 22d
kube-proxy-ttjcn 1/1 Running 0 24d
## 编辑ComfigMap kube-proxy大概在39行左右 把 mode: "" 修改为mode: "ipvs"
[root@k8s-master ~]# kubectl edit configmap kube-proxy -n kube-system
configmap/kube-proxy edited
## 对于Kubernetes来说,可以直接将这三个Pod删除之后,会自动重建,因为kube-proxy是由daemonset控制的
## 下面批量删除
[root@k8s-master ~]# kubectl get pod -n kube-system | grep kube-proxy | awk '{system("kubectl delete pod "$1" -n kube-system")}'
pod "kube-proxy-6sp4j" deleted
pod "kube-proxy-hbnkf" deleted
pod "kube-proxy-ttjcn" deleted
## 由于我们已经通过ConfigMap修改了kube-proxy的配置,所以后期增加的Node节点,会直接使用ipvs模式。
[root@k8s-master ~]# kubectl get pods -n kube-system |grep proxy
kube-proxy-56l57 1/1 Running 0 16s
kube-proxy-9cpth 1/1 Running 0 18s
kube-proxy-rz27h 1/1 Running 0 13s
[root@k8s-master ~]# kubectl logs kube-proxy-56l57 -n kube-system
I1218 02:07:49.322393 1 server_others.go:170] Using ipvs Proxier.
W1218 02:07:49.337427 1 proxier.go:401] IPVS scheduler not specified, use rr by default
I1218 02:07:49.337761 1 server.go:534] Version: v1.15.1
I1218 02:07:49.346725 1 conntrack.go:52] Setting nf_conntrack_max to 655360
I1218 02:07:49.346910 1 config.go:187] Starting service config controller
I1218 02:07:49.346945 1 controller_utils.go:1029] Waiting for caches to sync for service config controller
I1218 02:07:49.347014 1 config.go:96] Starting endpoints config controller
I1218 02:07:49.347059 1 controller_utils.go:1029] Waiting for caches to sync for endpoints config controller
I1218 02:07:49.447092 1 controller_utils.go:1036] Caches are synced for service config controller
I1218 02:07:49.447186 1 controller_utils.go:1036] Caches are synced for endpoints config controller
## 日志中打印出了Using ipvs Proxier,说明ipvs模式已经开启。
## 使用ipvsadm测试,可以查看之前创建的Service已经使用LVS创建了集群
[root@k8s-master ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.17.0.1:30001 rr
-> 10.244.1.101:8080 Masq 1 0 0
TCP 172.17.0.1:30003 rr
-> 10.244.1.107:8080 Masq 1 0 0
-> 10.244.3.120:8080 Masq 1 0 0
-> 10.244.3.122:8080 Masq 1 0 0
TCP 172.17.0.1:30004 rr
-> 10.244.1.109:8080 Masq 1 0 0
-> 10.244.3.124:8080 Masq 1 0 0
-> 10.244.3.125:8080 Masq 1 0 0
TCP 172.17.0.1:30005 rr
-> 10.244.1.113:8080 Masq 1 0 0
-> 10.244.3.131:8080 Masq 1 0 0
-> 10.244.3.132:8080 Masq 1 0 0
TCP 172.17.0.1:30100 rr
-> 10.244.3.53:3000 Masq 1 0 0
TCP 172.17.0.1:30973 rr
-> 10.244.1.86:8080 Masq 1 0 0
-> 10.244.3.85:8080 Masq 1 0 0
TCP 172.17.0.1:31417 rr
-> 10.244.1.60:8443 Masq 1 0 0
TCP 172.17.0.1:32515 rr
-> 10.244.3.66:5601 Masq 1 0 0
TCP 172.17.0.1:32720 rr
-> 10.244.3.28:80 Masq 1 0 0
TCP 192.168.1.85:30000 rr
-> 10.244.3.121:8080 Masq 1 0 303
TCP 192.168.1.85:30001 rr
-> 10.244.1.101:8080 Masq 1 0 138
TCP 192.168.1.85:30002 rr
-> 10.244.1.99:8080 Masq 1 0 38
-> 10.244.3.107:8080 Masq 1 0 39
-> 10.244.3.108:8080 Masq 1 0 39
TCP 192.168.1.85:30003 rr
-> 10.244.1.107:8080 Masq 1 1 85
-> 10.244.3.120:8080 Masq 1 0 85
-> 10.244.3.122:8080 Masq 1 0 85
TCP 192.168.1.85:30004 rr
-> 10.244.1.109:8080 Masq 1 0 39
-> 10.244.3.124:8080 Masq 1 0 40
-> 10.244.3.125:8080 Masq 1 0 39
TCP 192.168.1.85:30005 rr
-> 10.244.1.113:8080 Masq 1 0 28
-> 10.244.3.131:8080 Masq 1 0 27
-> 10.244.3.132:8080 Masq 1 1 26
TCP 192.168.1.85:30100 rr
-> 10.244.3.53:3000 Masq 1 0 6
TCP 192.168.1.85:30200 rr persistent 10800
-> 10.244.1.67:9090 Masq 1 0 0
-> 10.244.3.56:9090 Masq 1 0 0
TCP 192.168.1.85:30300 rr persistent 10800
-> 10.244.1.66:9093 Masq 1 0 0
-> 10.244.3.54:9093 Masq 1 0 0
-> 10.244.3.55:9093 Masq 1 0 0
TCP 192.168.1.85:30973 rr
-> 10.244.1.86:8080 Masq 1 0 0
-> 10.244.3.85:8080 Masq 1 0 0
TCP 192.168.1.85:31306 rr
-> 10.244.3.28:443 Masq 1 0 0
TCP 192.168.1.85:31417 rr
-> 10.244.1.60:8443 Masq 1 0 0
TCP 192.168.1.85:32515 rr
-> 10.244.3.66:5601 Masq 1 0 0
TCP 192.168.1.85:32720 rr
-> 10.244.3.28:80 Masq 1 0 0
TCP 10.96.0.1:443 rr
-> 192.168.1.85:6443 Masq 1 24 0
TCP 10.96.0.10:53 rr
-> 10.244.0.2:53 Masq 1 0 0
-> 10.244.0.3:53 Masq 1 0 0
TCP 10.96.0.10:9153 rr
-> 10.244.0.2:9153 Masq 1 0 0
-> 10.244.0.3:9153 Masq 1 0 0
TCP 10.96.206.146:3000 rr
-> 10.244.3.53:3000 Masq 1 0 0
TCP 10.97.146.74:8080 rr
-> 10.244.1.99:8080 Masq 1 0 0
-> 10.244.3.107:8080 Masq 1 0 0
-> 10.244.3.108:8080 Masq 1 0 0
TCP 10.99.35.223:80 rr
-> 10.244.1.116:80 Masq 1 0 0
-> 10.244.3.135:80 Masq 1 0 0
TCP 10.99.129.252:443 rr
-> 10.244.3.66:5601 Masq 1 0 0
TCP 10.99.202.26:8080 rr
-> 10.244.1.107:8080 Masq 1 0 0
-> 10.244.3.120:8080 Masq 1 0 0
-> 10.244.3.122:8080 Masq 1 0 0
TCP 10.100.176.231:8080 rr
-> 10.244.1.109:8080 Masq 1 0 0
-> 10.244.3.124:8080 Masq 1 0 0
-> 10.244.3.125:8080 Masq 1 0 0
TCP 10.101.14.181:9093 rr persistent 10800
-> 10.244.1.66:9093 Masq 1 0 0
-> 10.244.3.54:9093 Masq 1 0 0
-> 10.244.3.55:9093 Masq 1 0 0
TCP 10.101.116.209:3306 rr
-> 10.244.3.84:3306 Masq 1 0 0
TCP 10.102.235.237:44134 rr
-> 10.244.1.57:44134 Masq 1 0 0
TCP 10.104.118.54:8080 rr
-> 10.244.1.101:8080 Masq 1 0 0
TCP 10.104.145.175:9090 rr persistent 10800
-> 10.244.1.67:9090 Masq 1 0 0
-> 10.244.3.56:9090 Masq 1 0 0
TCP 10.105.187.124:80 rr
-> 10.244.1.115:80 Masq 1 0 0
-> 10.244.1.117:80 Masq 1 0 0
-> 10.244.3.134:80 Masq 1 0 0
-> 10.244.3.136:80 Masq 1 0 0
TCP 10.106.155.187:443 rr
-> 10.244.1.65:6443 Masq 1 0 0
TCP 10.107.97.209:80 rr
-> 10.244.3.48:80 Masq 1 0 0
TCP 10.108.122.242:8080 rr
-> 10.244.1.86:8080 Masq 1 0 0
-> 10.244.3.85:8080 Masq 1 0 0
TCP 10.108.213.51:443 rr
-> 10.244.1.60:8443 Masq 1 0 0
TCP 10.108.229.146:80 rr
-> 10.244.1.118:80 Masq 1 0 0
-> 10.244.3.137:80 Masq 1 0 0
TCP 10.109.8.33:80 rr
-> 10.244.3.28:80 Masq 1 0 0
TCP 10.109.8.33:443 rr
-> 10.244.3.28:443 Masq 1 0 0
TCP 10.109.29.143:80 rr
-> 10.244.1.115:80 Masq 1 0 0
-> 10.244.1.117:80 Masq 1 0 0
-> 10.244.3.134:80 Masq 1 0 0
-> 10.244.3.136:80 Masq 1 0 0
TCP 10.109.173.247:9200 rr
-> 10.244.1.70:9200 Masq 1 0 0
-> 10.244.3.60:9200 Masq 1 0 0
TCP 10.109.220.225:8080 rr
-> 10.244.1.113:8080 Masq 1 0 0
-> 10.244.3.131:8080 Masq 1 0 0
-> 10.244.3.132:8080 Masq 1 0 0
TCP 10.111.13.187:8080 rr
-> 10.244.3.121:8080 Masq 1 0 0
TCP 10.244.0.0:30000 rr
-> 10.244.3.121:8080 Masq 1 0 0
TCP 10.244.0.0:30001 rr
-> 10.244.1.101:8080 Masq 1 0 0
TCP 10.244.0.0:30002 rr
-> 10.244.1.99:8080 Masq 1 0 0
-> 10.244.3.107:8080 Masq 1 0 0
-> 10.244.3.108:8080 Masq 1 0 0
TCP 10.244.0.0:30003 rr
-> 10.244.1.107:8080 Masq 1 0 0
-> 10.244.3.120:8080 Masq 1 0 0
-> 10.244.3.122:8080 Masq 1 0 0
TCP 10.244.0.0:30004 rr
-> 10.244.1.109:8080 Masq 1 0 0
-> 10.244.3.124:8080 Masq 1 0 0
-> 10.244.3.125:8080 Masq 1 0 0
TCP 10.244.0.0:30005 rr
-> 10.244.1.113:8080 Masq 1 0 0
-> 10.244.3.131:8080 Masq 1 0 0
-> 10.244.3.132:8080 Masq 1 0 0
TCP 10.244.0.0:30100 rr
-> 10.244.3.53:3000 Masq 1 0 0
TCP 10.244.0.0:30200 rr persistent 10800
-> 10.244.1.67:9090 Masq 1 0 0
-> 10.244.3.56:9090 Masq 1 0 0
TCP 10.244.0.0:30300 rr persistent 10800
-> 10.244.1.66:9093 Masq 1 0 0
-> 10.244.3.54:9093 Masq 1 0 0
-> 10.244.3.55:9093 Masq 1 0 0
TCP 10.244.0.0:30973 rr
-> 10.244.1.86:8080 Masq 1 0 0
-> 10.244.3.85:8080 Masq 1 0 0
TCP 10.244.0.0:31306 rr
-> 10.244.3.28:443 Masq 1 0 0
TCP 10.244.0.0:31417 rr
-> 10.244.1.60:8443 Masq 1 0 0
TCP 10.244.0.0:32515 rr
-> 10.244.3.66:5601 Masq 1 0 0
TCP 10.244.0.0:32720 rr
-> 10.244.3.28:80 Masq 1 0 0
TCP 10.244.0.1:30000 rr
-> 10.244.3.121:8080 Masq 1 0 0
TCP 10.244.0.1:30001 rr
-> 10.244.1.101:8080 Masq 1 0 0
TCP 10.244.0.1:30002 rr
-> 10.244.1.99:8080 Masq 1 0 0
-> 10.244.3.107:8080 Masq 1 0 0
-> 10.244.3.108:8080 Masq 1 0 0
TCP 10.244.0.1:30003 rr
-> 10.244.1.107:8080 Masq 1 0 0
-> 10.244.3.120:8080 Masq 1 0 0
-> 10.244.3.122:8080 Masq 1 0 0
TCP 10.244.0.1:30004 rr
-> 10.244.1.109:8080 Masq 1 0 0
-> 10.244.3.124:8080 Masq 1 0 0
-> 10.244.3.125:8080 Masq 1 0 0
TCP 10.244.0.1:30005 rr
-> 10.244.1.113:8080 Masq 1 0 0
-> 10.244.3.131:8080 Masq 1 0 0
-> 10.244.3.132:8080 Masq 1 0 0
TCP 10.244.0.1:30100 rr
-> 10.244.3.53:3000 Masq 1 0 0
TCP 10.244.0.1:30200 rr persistent 10800
-> 10.244.1.67:9090 Masq 1 0 0
-> 10.244.3.56:9090 Masq 1 0 0
TCP 10.244.0.1:30300 rr persistent 10800
-> 10.244.1.66:9093 Masq 1 0 0
-> 10.244.3.54:9093 Masq 1 0 0
-> 10.244.3.55:9093 Masq 1 0 0
TCP 10.244.0.1:30973 rr
-> 10.244.1.86:8080 Masq 1 0 0
-> 10.244.3.85:8080 Masq 1 0 0
TCP 10.244.0.1:31306 rr
-> 10.244.3.28:443 Masq 1 0 0
TCP 10.244.0.1:31417 rr
-> 10.244.1.60:8443 Masq 1 0 0
TCP 10.244.0.1:32515 rr
-> 10.244.3.66:5601 Masq 1 0 0
TCP 10.244.0.1:32720 rr
-> 10.244.3.28:80 Masq 1 0 0
TCP 127.0.0.1:30000 rr
-> 10.244.3.121:8080 Masq 1 0 0
TCP 127.0.0.1:30001 rr
-> 10.244.1.101:8080 Masq 1 0 0
TCP 127.0.0.1:30002 rr
-> 10.244.1.99:8080 Masq 1 0 0
-> 10.244.3.107:8080 Masq 1 0 0
-> 10.244.3.108:8080 Masq 1 0 0
TCP 127.0.0.1:30003 rr
-> 10.244.1.107:8080 Masq 1 0 0
-> 10.244.3.120:8080 Masq 1 0 0
-> 10.244.3.122:8080 Masq 1 0 0
TCP 127.0.0.1:30004 rr
-> 10.244.1.109:8080 Masq 1 0 0
-> 10.244.3.124:8080 Masq 1 0 0
-> 10.244.3.125:8080 Masq 1 0 0
TCP 127.0.0.1:30005 rr
-> 10.244.1.113:8080 Masq 1 0 0
-> 10.244.3.131:8080 Masq 1 0 0
-> 10.244.3.132:8080 Masq 1 0 0
TCP 127.0.0.1:30100 rr
-> 10.244.3.53:3000 Masq 1 0 0
TCP 127.0.0.1:30200 rr persistent 10800
-> 10.244.1.67:9090 Masq 1 0 0
-> 10.244.3.56:9090 Masq 1 0 0
TCP 127.0.0.1:30300 rr persistent 10800
-> 10.244.1.66:9093 Masq 1 0 0
-> 10.244.3.54:9093 Masq 1 0 0
-> 10.244.3.55:9093 Masq 1 0 0
TCP 127.0.0.1:30973 rr
-> 10.244.1.86:8080 Masq 1 0 0
-> 10.244.3.85:8080 Masq 1 0 0
TCP 127.0.0.1:31306 rr
-> 10.244.3.28:443 Masq 1 0 0
TCP 127.0.0.1:31417 rr
-> 10.244.1.60:8443 Masq 1 0 0
TCP 127.0.0.1:32515 rr
-> 10.244.3.66:5601 Masq 1 0 0
TCP 127.0.0.1:32720 rr
-> 10.244.3.28:80 Masq 1 0 0
TCP 172.17.0.1:30000 rr
-> 10.244.3.121:8080 Masq 1 0 0
TCP 172.17.0.1:30002 rr
-> 10.244.1.99:8080 Masq 1 0 0
-> 10.244.3.107:8080 Masq 1 0 0
-> 10.244.3.108:8080 Masq 1 0 0
TCP 172.17.0.1:30200 rr persistent 10800
-> 10.244.1.67:9090 Masq 1 0 0
-> 10.244.3.56:9090 Masq 1 0 0
TCP 172.17.0.1:30300 rr persistent 10800
-> 10.244.1.66:9093 Masq 1 0 0
-> 10.244.3.54:9093 Masq 1 0 0
-> 10.244.3.55:9093 Masq 1 0 0
TCP 172.17.0.1:31306 rr
-> 10.244.3.28:443 Masq 1 0 0
UDP 10.96.0.10:53 rr
-> 10.244.0.2:53 Masq 1 0 0
-> 10.244.0.3:53 Masq 1 0 0