云計(jì)算
kube-proxy組件是要是為集群內(nèi)pod應(yīng)用提供endpoint服務(wù),當(dāng)我們?yōu)橐粋€(gè)pod定義了svc時(shí),kube-proxy會(huì)自動(dòng)生成pod與svc的映射關(guān)系,并代理到集群內(nèi)部或宿主機(jī)上。
1 安裝準(zhǔn)備
特別說(shuō)明:這里所有的操作都是在devops這臺(tái)機(jī)器上通過(guò)ansible工具執(zhí)行;kube-proxy 需要使用kubeconfig認(rèn)證文件安全訪問(wèn)kube-apiserver:它監(jiān)聽(tīng) apiserver 中 service 和 endpoint 的變化情況,創(chuàng)建路由規(guī)則以提供服務(wù) ip 和負(fù)載均衡功能。
1.1 環(huán)境變量定義
#################### 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 下載和分發(fā) kubernetes 二進(jìn)制文件
訪問(wèn)kubernetes github 官方地址下載穩(wěn)定的 realease 包至本機(jī);
wget $download_url -p $software將kubernetes 軟件包分發(fā)到各個(gè)master節(jié)點(diǎn)服務(wù)器;
sudo ansible master_k8s_vgs -m copy -a src=${software}/$package dest=${software}/ -b2 部署kube-proxy集群
2.1 安裝kube-proxy二進(jìn)制文件
### 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 分發(fā)kubeconfig文件和證書(shū)文件
分發(fā)ca根證書(shū)
cd $ca_diransible worker_k8s_vgs -m copy -a src=ca.pem dest=$ca_dir -b分發(fā)kubeconfig認(rèn)證文件
kube-proxy使用 kubeconfig文件連接訪問(wèn) apiserver服務(wù),該文件提供了 apiserver 地址、嵌入的 ca 證書(shū)和 kube-proxy服務(wù)器證書(shū)以及私鑰:
cd $kube_config_pathansible worker_k8s_vgs -m copy -a src= kube-proxy.kubeconfig dest=$kube_config_path -b備注: 如果在前面小節(jié)已經(jīng)同步過(guò)各組件kubeconfig和證書(shū)文件,此處可以不必執(zhí)行此操作;
2.3 創(chuàng)建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: 監(jiān)聽(tīng)地址;
clientconnection.kubeconfig: 連接 apiserver 的 kubeconfig 文件;
clustercidr: kube-proxy 根據(jù) –cluster-cidr 判斷集群內(nèi)部和外部流量,指定 –cluster-cidr 或 –masquerade-all 選項(xiàng)后 kube-proxy 才會(huì)對(duì)訪問(wèn) service ip 的請(qǐng)求做 snat;
hostnameoverride: 參數(shù)值必須與 kubelet 的值一致,否則 kube-proxy 啟動(dòng)后會(huì)找不到該 node,從而不會(huì)創(chuàng)建任何 ipvs 規(guī)則;
mode: 使用 ipvs 模式;
2.4 創(chuàng)建kube-proxy 啟動(dòng)服務(wù)
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 檢查服務(wù)運(yùn)行狀態(tài)
systemctl status kube-proxy|grep active確保狀態(tài)為 active (running),否則查看日志,確認(rèn)原因:
sudo journalctl -u kube-proxy2.6 查看輸出的 metrics
注意:以下命令在 kube-scheduler 節(jié)點(diǎn)上執(zhí)行。kube-proxy 監(jiān)聽(tīng) 10249 和 10256 端口:兩個(gè)接口都對(duì)外提供 /metrics 和 /healthz 的訪問(wèn)。<
騰訊云10m服務(wù)器多少錢(qián)一個(gè)月騰訊企業(yè)郵箱可以讓你放心,在技術(shù)方面騰訊企業(yè)郵箱相當(dāng)成熟滲透測(cè)試服務(wù) 前期對(duì)客戶網(wǎng)站APP的信息收集分享私有云服務(wù)器報(bào)價(jià)億速云服務(wù)器配置參數(shù)“宏顏獲水”刷爆網(wǎng)絡(luò) 怡寶或成最大贏家?貴陽(yáng)買(mǎi)阿里云服務(wù)器買(mǎi)哪個(gè)地區(qū)的中國(guó)電信天翼云青島雙節(jié)點(diǎn)隆重上線