云计算
当kube-proxy组件为群集中的pod APP应用程序提供endpoint服务时,如果为单个pod定义了svc,kube-proxy将自动生成pod与svc之间的映射关系,从而在群集内部或主机上创建映射关系
1准备安装
特殊说明:这里的所有操作都是在一台名为devops的机器上通过ansible工具完成的; kube-proxy必须使用kubeconfig验证文件安全地访问kube-apiserver。 kube-apiserver创建路由规则以侦听apiserver中的service和endpoint更改,并提供服务器IP和负载平衡功能。
1.1环境变量定义
# # # # # # # # # # variableparametersetting # # # # # # # variableparametersetting
KUBE_NAME=kube-proxy
k8s _ install _ path=/data/apps/k8s/kubernetes
k8s _ bin _ path=$ { k8s _ install _ path }/sbin
k8s _ log _ dir=$ { k8s _ install _ path }/logs
k8s _ conf _ path=/etc/k8s/kubernetes
kube _ config _ path=/etc/k8s/kube config
CA_DIR=/etc/k8s/ssl
SOFTWARE=/root/software
HOSTNAME=`hostname `
VERSION=v1.14.2
package=kubernetes-server-$ { version }-Linux-amd64.tar.gz
download _ URL=https://github.com/devo PS-apps/download/raw/master/kubernetes/$ package
ETH_INTERFACE=eth2
listen _ IP=$ ( ifconfig-a1 $ { eth _ interface } ); quot; {print$2}\\&; quot; () ) ) ) ) ) ) ) ) ) 652 )
cluster _ pods _ CIDR=172.16.0.0/20
1.2下载和分发kubernetes二进制文件
访问kubernetes github的官方地址以本地下载稳定的发行版软件包;
wget $DOWNLOAD_URL -P $SOFTWARE
将kubernetes包分发到每个主节点服务器
sdoansiblemaster _ k8s _ vgs-mcopy-asrc=$ { software }/$ packaged est=$ { software }/- b
kube-proxy集群部署
2.1安装kube-proxy二进制文件
# #1. checkiftheinstalldirectoryexists。
if [! -d $K8S_BIN_PATH ]; then
mkdir -p $K8S_BIN_PATH
fi
if [! -d $K8S_LOG_DIR/$KUBE_NAME ]; then
mkdir -p $K8S_LOG_DIR/$KUBE_NAME
fi
if [! -d $K8S_CONF_PATH ]; then
mkdir -p $K8S_CONF_PATH
fi
if [! -d $KUBE_CONFIG_PATH ]; then
mkdir -p $KUBE_CONFIG_PATH
fi
# #2.安装kube-proxybinaryofkubernetes。
if [! - f $ software/kubernetes-server-$ { version }-Linux-amd64.tar.gz }; then
wget $ download _ URL-p $ software/tmp/install.log 21
fi
CD $ software tar-xzfkubernetes-server-$ { version }-Linux-amd64.tar.gz-c./
CP-fpkubernetes/server/bin/$ kube _ name $ k8s _ bin _ path
ln-SF $ k8s _ bin _ path/$ { kube _ name }/usr/local/bin
chmod -R 755 $K8S_INSTALL_PATH
2.2分发kube config文件和证书文件
分发CA根证书
cd $CA_DIR
ansibleworker _ k8s _ vgs-mcopy-asrc=ca.PEM dest=$ ca _ dir-b
分发kubeconfig认证文件
kube-proxy通过kubeconfig文件连接访问apiserver服务。 此文件包含apiserver地址、嵌入式CA证书、kube-proxy服务器证书和私钥。
cd $KUBE_CONFIG_PATH
ansibleworker _ k8s _ vgs-mcopy-asrc=kube-proxy.kubeconfigdest=$ kube _ config _ path-b
注:如果在上一部分中将证书文件与每个组件kubeconfig同步,则无需在此处执行此操作。
2.3创建kube-proxy配置文件
cat $ { k8s _ conf _ path }/kube-proxy-config.YAML eof
kind: KubeProxyConfiguration
API version:kube proxy.config.k8s.io/v1 alpha 1
客户端连接:
burst: 200
kube config:$ { kube _ config _ path }/kube-proxy.kube config
qps: 100
bindAddress: ${LISTEN_IP}
healthzbindaddress:$ { listen _ IP }:10256
metrics bindaddress:$ { listen _ IP }:10249
cluster CIDR:$ { cluster _ pods _ CIDR }
hostnameOverride: ${HOSTNAME}
模式: ipvs
端口范围:
kubeProxyIPTablesConfiguration :
masqueradeAll: false
kubeProxyIPVSConfiguration :
方案: RR
excludeCIDRs: []
EOF
绑定:地址侦听;
client connection.kubeconfig :连接到apiserver的kube config文件;
clusterCIDR: kube-proxy根据cluster-CIDR确定群集的内部和外部通信,指定cluster-CIDR或masquerade-all选项,然后使用kuster-CIDR
hostnameOverride :参数的值必须与kubelet的值一致。 如果不匹配,则在kube-proxy启动后找不到该Node,并且不会创建ipvs规则。
模式:使用ipvs模式;
2.4创建kube-proxy启动服务
cat/usr/lib/systemd/system/$ { kube _ name }.service eof
[Unit]
description=kuberneteskube-proxy服务器
documentation=https://github.com/Google cloud platform/kubernetes
After=network.target
服务
working directory=$ { k8s _ install _ path }
execstart=$ { k8s _ bin _ path }/$ { kube _ name }\\ & amp; quot;
- config=$ { k8s _ conf _ path }/kube-proxy-config.YAML\\ & amp; quot; \&; quot;
-alsologtostderr=true\\\\&; quot; \&; quot;
-logtostderr=false\\\\&; quot;
- log-dir=$ { k8s _ log _ dir }/$ { kube _ name }\\ & amp; quot; \&; quot;
--v=2
Restart=on-failure
RestartSec=5
LimitNOFILE=65536
[安装]
WantedBy=multi-user.target
EOF
2.5检查服务的运行状态
系统状态属性
验证状态是否为活动(运行)。 如果不是,请检查日志并确认原因。
sudo journalctl -u kube-proxy
2.6查看输出的metrics
注意:以下命令将在kube-scheduler节点上运行: kube-proxy监听10249端口和10256端口。 这两个接口都对外提供对/metrics和/healthz的访问。
sudo netstat-ntlp|grep kube-proxy
TCP 010.10.10.40:102490.0.0.0:* listen 22604/kube-proxy
TCP 010.10.10.40:102560.0.0.0:* listen 22604/kube-proxy
2.7查看ipvs路由规则
sudo ipvsadm -ln
ipvirtualserverversion1.2.1( size=4096 ) )
prot local address:portschedulerflags
- remote address:portforwardweightactiveconninactconn
TCP 192.168.20.40:8400 rr
- 172.16.3.2:8080质量100
- 172.16.3.3:8080 Masq 1 0 0
- 172.16.3.4:8080 Masq 1 0 0
TCP 192.168.20.40:8497 rr
- 172.16.3.2:8500质量100
- 172.16.3.3:8500 Masq 1 0 0
- 172.16.3.4:8500 Masq 1 0 0
TCP 10.10.10.40:8400 rr
- 172.16.3.2:8080质量100
- 172.16.3.3:8080 Masq 1 0 0
- 172.16.3.4:8080 Masq 1 0 0
这样就完成了整个集群的基本部署。 有关kubernetes群集监视的信息,请参考《kubernetes群集安装指南》“引入kubernetes群集插件”。 kube-proxy脚本可以从这里获得。
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn