云计算
kube-proxy组件是要是为集群内pod应用提供endpoint服务,当我们为一个pod定义了svc时,kube-proxy会自动生成pod与svc的映射关系,并代理到集群内部或宿主机上。
1 安装准备
特别说明:这里所有的操作都是在devops这台机器上通过ansible工具执行;kube-proxy 需要使用kubeconfig认证文件安全访问kube-apiserver:它监听 apiserver 中 service 和 endpoint 的变化情况,创建路由规则以提供服务 ip 和负载均衡功能。
1.1 环境变量定义
#################### variable parameter setting ######################kube_name=kube-proxyk8s_install_path=/data/apps/k8s/kubernetesk8s_bin_path=${k8s_install_path}/sbink8s_log_dir=${k8s_install_path}/logsk8s_conf_path=/etc/k8s/kuberneteskube_config_path=/etc/k8s/kubeconfigca_dir=/etc/k8s/sslsoftware=/root/softwarehostname=`hostname`version=v1.14.2package=kubernetes-server-${version}-linux-amd64.tar.gzdownload_url=https://github.com/devops-apps/download/raw/master/kubernetes/$packageeth_interface=eth2listen_ip=$(ifconfig | grep -a 1 ${eth_interface} |grep inet |awk \\\'{print $2}\\\')cluster_pods_cidr=172.16.0.0/201.2 下载和分发 kubernetes 二进制文件
访问kubernetes github 官方地址下载稳定的 realease 包至本机;
wget $download_url -p $software将kubernetes 软件包分发到各个master节点服务器;
sudo ansible master_k8s_vgs -m copy -a src=${software}/$package dest=${software}/ -b2 部署kube-proxy集群
2.1 安装kube-proxy二进制文件
### 1.check if the install directory exists.if [ ! -d $k8s_bin_path ]; then mkdir -p $k8s_bin_pathfiif [ ! -d $k8s_log_dir/$kube_name ]; then mkdir -p $k8s_log_dir/$kube_namefiif [ ! -d $k8s_conf_path ]; then mkdir -p $k8s_conf_pathfiif [ ! -d $kube_config_path ]; then mkdir -p $kube_config_pathfi### 2.install kube-proxy binary of kubernetes.if [ ! -f $software/kubernetes-server-${version}-linux-amd64.tar.gz ]; then wget $download_url -p $software >>/tmp/install.log 2>&1ficd $software && tar -xzf kubernetes-server-${version}-linux-amd64.tar.gz -c ./cp -fp kubernetes/server/bin/$kube_name $k8s_bin_pathln -sf $k8s_bin_path/${kube_name} /usr/local/binchmod -r 755 $k8s_install_path2.2 分发kubeconfig文件和证书文件
分发ca根证书
cd $ca_diransible worker_k8s_vgs -m copy -a src=ca.pem dest=$ca_dir -b分发kubeconfig认证文件
kube-proxy使用 kubeconfig文件连接访问 apiserver服务,该文件提供了 apiserver 地址、嵌入的 ca 证书和 kube-proxy服务器证书以及私钥:
cd $kube_config_pathansible worker_k8s_vgs -m copy -a src= kube-proxy.kubeconfig dest=$kube_config_path -b备注: 如果在前面小节已经同步过各组件kubeconfig和证书文件,此处可以不必执行此操作;
2.3 创建kube-proxy配置文件
cat >${k8s_conf_path}/kube-proxy-config.yaml<<eofkind: kubeproxyconfigurationapiversion: kubeproxy.config.k8s.io/v1alpha1clientconnection: burst: 200 kubeconfig: ${kube_config_path}/kube-proxy.kubeconfig qps: 100bindaddress: ${listen_ip}healthzbindaddress: ${listen_ip}:10256metricsbindaddress: ${listen_ip}:10249clustercidr: ${cluster_pods_cidr}hostnameoverride: ${hostname}mode: ipvsportrange: kubeproxyiptablesconfiguration: masqueradeall: falsekubeproxyipvsconfiguration: scheduler: rr excludecidrs: []eofbindaddress: 监听地址;
clientconnection.kubeconfig: 连接 apiserver 的 kubeconfig 文件;
clustercidr: kube-proxy 根据 –cluster-cidr 判断集群内部和外部流量,指定 –cluster-cidr 或 –masquerade-all 选项后 kube-proxy 才会对访问 service ip 的请求做 snat;
hostnameoverride: 参数值必须与 kubelet 的值一致,否则 kube-proxy 启动后会找不到该 node,从而不会创建任何 ipvs 规则;
mode: 使用 ipvs 模式;
2.4 创建kube-proxy 启动服务
cat >/usr/lib/systemd/system/${kube_name}.service <<eof[unit]description=kubernetes kube-proxy serverdocumentation=https://github.com/googlecloudplatform/kubernetesafter=network.target[service]workingdirectory=${k8s_install_path}execstart=${k8s_bin_path}/${kube_name} \\\\\\\\ --config=${k8s_conf_path}/kube-proxy-config.yaml \\\\\\\\ --alsologtostderr=true \\\\\\\\ --logtostderr=false \\\\\\\\ --log-dir=${k8s_log_dir}/${kube_name} \\\\\\\\ --v=2restart=on-failurerestartsec=5limitnofile=65536[install]wantedby=multi-user.targeteof2.5 检查服务运行状态
systemctl status kube-proxy|grep active确保状态为 active (running),否则查看日志,确认原因:
sudo journalctl -u kube-proxy2.6 查看输出的 metrics
注意:以下命令在 kube-scheduler 节点上执行。kube-proxy 监听 10249 和 10256 端口:两个接口都对外提供 /metrics 和 /healthz 的访问。<
腾讯云10m服务器多少钱一个月腾讯企业邮箱可以让你放心,在技术方面腾讯企业邮箱相当成熟渗透测试服务 前期对客户网站APP的信息收集分享私有云服务器报价亿速云服务器配置参数“宏颜获水”刷爆网络 怡宝或成最大赢家?贵阳买阿里云服务器买哪个地区的中国电信天翼云青岛双节点隆重上线