PCEtLXtzdWJ0ZW1wbGF0ZSBjb21tb24vaGVhZGVyX2NvbW1vbn0tLT4JPCEtLXtpZiAkX0dFVFsnbW9kJ10gPT0gJ3ZpZXd0aHJlYWQnICYmICFlbXB0eSgkX0dbJ3RpZCddKX0tLT4KCTxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3d3dy5xaWRhbzEyMy5jb20vYmJzL3RocmVhZC17JF9HWyd0aWQnXX0tMS0xLmh0bWwiIC8+Cgk8IS0te2Vsc2VpZiAkX0dFVFsnbW9kJ10gPT0gJ2ZvcnVtZGlzcGxheScgJiYgIWVtcHR5KCRfR1snZmlkJ10pfS0tPgoJPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vd3d3LnFpZGFvMTIzLmNvbS9iYnMvZm9ydW0teyRfR1snZmlkJ119LTEuaHRtbCIgLz4KCTwhLS17ZWxzZWlmICRfR0VUWydtb2QnXSA9PSAnZ3VpZGUnfS0tPgoJPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vd3d3LnFpZGFvMTIzLmNvbS9iYnMvZ3VpZGUvIiAvPgoJPCEtLXtlbHNlaWYgJF9HWydiYXNlc2NyaXB0J10gPT0gJ2ZvcnVtJyAmJiAoZW1wdHkoJF9HRVRbJ21vZCddKSB8fCAkX0dFVFsnbW9kJ10gPT0gJ2luZGV4Jyl9LS0+Cgk8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly93d3cucWlkYW8xMjMuY29tL2Jicy8iIC8+Cgk8IS0tey9pZn0tLT4KCXJgbmB0PG1ldGEgbmFtZT0iYXBwbGljYXRpb24tbmFtZSIgY29udGVudD0iJF9HWydzZXR0aW5nJ11bJ2JibmFtZSddIiAvPgoJPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi10b29sdGlwIiBjb250ZW50PSIkX0dbJ3NldHRpbmcnXVsnYmJuYW1lJ10iIC8+Cgk8IS0te2lmICRfR1snc2V0dGluZyddWydwb3J0YWxzdGF0dXMnXX0tLT48bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLXRhc2siIGNvbnRlbnQ9Im5hbWU9JF9HWydzZXR0aW5nJ11bJ25hdnMnXVsxXVsnbmF2bmFtZSddO2FjdGlvbi11cmk9e2VjaG8gIWVtcHR5KCRfR1snc2V0dGluZyddWydkb21haW4nXVsnYXBwJ11bJ3BvcnRhbCddKSA/ICRfR1snc2NoZW1lJ10uJzovLycuJF9HWydzZXR0aW5nJ11bJ2RvbWFpbiddWydhcHAnXVsncG9ydGFsJ10gOiAkX0dbc2l0ZXVybF0uJ3BvcnRhbC5waHAnfTtpY29uLXVyaT17JF9HW3NpdGV1cmxdfXtJTUdESVJ9L3BvcnRhbC5pY28iIC8+PCEtLXsvaWZ9LS0+Cgk8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLXRhc2siIGNvbnRlbnQ9Im5hbWU9JF9HWydzZXR0aW5nJ11bJ25hdnMnXVsyXVsnbmF2bmFtZSddO2FjdGlvbi11cmk9e2VjaG8gIWVtcHR5KCRfR1snc2V0dGluZyddWydkb21haW4nXVsnYXBwJ11bJ2ZvcnVtJ10pID8gJF9HWydzY2hlbWUnXS4nOi8vJy4kX0dbJ3NldHRpbmcnXVsnZG9tYWluJ11bJ2FwcCddWydmb3J1bSddIDogJF9HW3NpdGV1cmxdLidmb3J1bS5waHAnfTtpY29uLXVyaT17JF9HW3NpdGV1cmxdfXtJTUdESVJ9L2Jicy5pY28iIC8+Cgk8IS0te2lmICRfR1snc2V0dGluZyddWydncm91cHN0YXR1cyddfS0tPjxtZXRhIG5hbWU9Im1zYXBwbGljYXRpb24tdGFzayIgY29udGVudD0ibmFtZT0kX0dbJ3NldHRpbmcnXVsnbmF2cyddWzNdWyduYXZuYW1lJ107YWN0aW9uLXVyaT17ZWNobyAhZW1wdHkoJF9HWydzZXR0aW5nJ11bJ2RvbWFpbiddWydhcHAnXVsnZ3JvdXAnXSkgPyAkX0dbJ3NjaGVtZSddLic6Ly8nLiRfR1snc2V0dGluZyddWydkb21haW4nXVsnYXBwJ11bJ2dyb3VwJ10gOiAkX0dbc2l0ZXVybF0uJ2dyb3VwLnBocCd9O2ljb24tdXJpPXskX0dbc2l0ZXVybF19e0lNR0RJUn0vZ3JvdXAuaWNvIiAvPjwhLS17L2lmfS0tPgoJPCEtLXtpZiBoZWxwZXJfYWNjZXNzOjpjaGVja19tb2R1bGUoJ2ZlZWQnKX0tLT48bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLXRhc2siIGNvbnRlbnQ9Im5hbWU9JF9HWydzZXR0aW5nJ11bJ25hdnMnXVs0XVsnbmF2bmFtZSddO2FjdGlvbi11cmk9e2VjaG8gIWVtcHR5KCRfR1snc2V0dGluZyddWydkb21haW4nXVsnYXBwJ11bJ2hvbWUnXSkgPyAkX0dbJ3NjaGVtZSddLic6Ly8nLiRfR1snc2V0dGluZyddWydkb21haW4nXVsnYXBwJ11bJ2hvbWUnXSA6ICRfR1tzaXRldXJsXS4naG9tZS5waHAnfTtpY29uLXVyaT17JF9HW3NpdGV1cmxdfXtJTUdESVJ9L2hvbWUuaWNvIiAvPjwhLS17L2lmfS0tPgoJPCEtLXtpZiAkX0dbJ2Jhc2VzY3JpcHQnXSA9PSAnZm9ydW0nICYmICRfR1snc2V0dGluZyddWydhcmNoaXZlciddfS0tPgoJCTxsaW5rIHJlbD0iYXJjaGl2ZXMiIHRpdGxlPSIkX0dbJ3NldHRpbmcnXVsnYmJuYW1lJ10iIGhyZWY9InskX0dbc2l0ZXVybF19YXJjaGl2ZXIvIiAvPgoJPCEtLXsvaWZ9LS0+Cgk8IS0te2lmICFlbXB0eSgkcnNzaGVhZCl9LS0+JHJzc2hlYWQ8IS0tey9pZn0tLT4KCTwhLS17aWYgd2lkdGhhdXRvKCl9LS0+CgkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBpZD0iY3NzX3dpZHRoYXV0byIgdHlwZT0idGV4dC9jc3MiIGhyZWY9J3skX0dbJ3NldHRpbmcnXVsnY3NzcGF0aCddfXtTVFlMRUlEfV93aWR0aGF1dG8uY3NzP3tWRVJIQVNIfScgLz4KCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+SFRNTE5PREUuY2xhc3NOYW1lICs9ICcgd2lkdGhhdXRvJzwvc2NyaXB0PgoJPCEtLXsvaWZ9LS0+Cgk8IS0te2lmICRfR1snYmFzZXNjcmlwdCddID09ICdmb3J1bScgfHwgJF9HWydiYXNlc2NyaXB0J10gPT0gJ2dyb3VwJ30tLT4KCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JF9HW3NldHRpbmddW2pzcGF0aF19Zm9ydW0uanM/e1ZFUkhBU0h9Ij48L3NjcmlwdD4KCTwhLS17ZWxzZWlmICRfR1snYmFzZXNjcmlwdCddID09ICdob21lJ30tLT4KCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JF9HW3NldHRpbmddW2pzcGF0aF19aG9tZS5qcz97VkVSSEFTSH0iPjwvc2NyaXB0PgoJPCEtLXtlbHNlaWYgJF9HWydiYXNlc2NyaXB0J10gPT0gJ3BvcnRhbCd9LS0+CgkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ieyRfR1tzZXR0aW5nXVtqc3BhdGhdfXBvcnRhbC5qcz97VkVSSEFTSH0iPjwvc2NyaXB0PgoJPCEtLXsvaWZ9LS0+Cgk8IS0te2lmICRfR1snYmFzZXNjcmlwdCddICE9ICdwb3J0YWwnICYmICRfR0VUWydkaXknXSA9PSAneWVzJyAmJiBjaGVja19kaXlfcGVybSgkdG9waWMpfS0tPgoJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InskX0dbc2V0dGluZ11banNwYXRoXX1wb3J0YWwuanM/e1ZFUkhBU0h9Ij48L3NjcmlwdD4KCTwhLS17L2lmfS0tPgoJPCEtLXtpZiAkX0dFVFsnZGl5J10gPT0gJ3llcycgJiYgY2hlY2tfZGl5X3Blcm0oJHRvcGljKX0tLT4KCQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBpZD0iZGl5X2NvbW1vbiIgaHJlZj0ieyRfR1snc2V0dGluZyddWydjc3NwYXRoJ119e1NUWUxFSUR9X2Nzc19kaXkuY3NzP3tWRVJIQVNIfSIgLz4KCTwhLS17L2lmfS0tPgo8L2hlYWQ+Cgo8Ym9keSBpZD0ibnZfeyRfR1tiYXNlc2NyaXB0XX0iIGNsYXNzPSJwZ197Q1VSTU9EVUxFfXtpZiAkX0dbJ2Jhc2VzY3JpcHQnXSA9PT0gJ3BvcnRhbCcgJiYgQ1VSTU9EVUxFID09PSAnbGlzdCcgJiYgIWVtcHR5KCRjYXQpfSB7JGNhdFsnYm9keWNzcyddfXsvaWZ9IiBvbmtleWRvd249ImlmKGV2ZW50LmtleUNvZGU9PTI3KSByZXR1cm4gZmFsc2U7Ij4KCTxkaXYgaWQ9ImFwcGVuZF9wYXJlbnQiPjwvZGl2PjxkaXYgaWQ9ImFqYXh3YWl0aWQiPjwvZGl2PgoJPCEtLXtpZiAkX0dFVFsnZGl5J10gPT0gJ3llcycgJiYgY2hlY2tfZGl5X3Blcm0oJHRvcGljKX0tLT4KCQk8IS0te3RlbXBsYXRlIGNvbW1vbi9oZWFkZXJfZGl5fS0tPgoJPCEtLXsvaWZ9LS0+Cgk8IS0te2lmIGNoZWNrX2RpeV9wZXJtKCR0b3BpYyl9LS0+CgkJPCEtLXt0ZW1wbGF0ZSBjb21tb24vaGVhZGVyX2RpeW5hdn0tLT4KCTwhLS17L2lmfS0tPgoJPCEtLXtpZiBDVVJNT0RVTEUgPT0gJ3RvcGljJyAmJiAkdG9waWMgJiYgZW1wdHkoJHRvcGljWyd1c2VoZWFkZXInXSkgJiYgY2hlY2tfZGl5X3Blcm0oJHRvcGljKX0tLT4KCQkkZGl5bmF2Cgk8IS0tey9pZn0tLT4KCTwhLS17aWYgZW1wdHkoJHRvcGljKSB8fCAkdG9waWNbJ3VzZWhlYWRlciddfS0tPgoJCTwhLS17aWYgJF9HWydzZXR0aW5nJ11bJ21vYmlsZSddWydhbGxvd21vYmlsZSddICYmICghJF9HWydzZXR0aW5nJ11bJ2NhY2hlaW5kZXhsaWZlJ10gJiYgISRfR1snc2V0dGluZyddWydjYWNoZXRocmVhZG9uJ10gfHwgJF9HWyd1aWQnXSkgJiYgKCRfR0VUWydkaXknXSAhPSAneWVzJyB8fCAhJF9HRVRbJ2luYWpheCddKSAmJiAoJF9HWydtb2JpbGUnXSAhPSAnJyAmJiAkX0dbJ2Nvb2tpZSddWydtb2JpbGUnXSA9PSAnJyAmJiAkX0dFVFsnbW9iaWxlJ10gIT0gJ25vJyl9LS0+CgkJCTxkaXYgY2xhc3M9InhpMSBibSBibV9jIj4KCQkJICAgIHtsYW5nIHlvdXJfbW9iaWxlX2Jyb3dzZXJ9PGEgaHJlZj0ieyRfR1snc2l0ZXVybCddfWZvcnVtLnBocD9tb2JpbGU9eWVzIj57bGFuZyBnb190b19tb2JpbGV9PC9hPiA8c3BhbiBjbGFzcz0ieGcxIj58PC9zcGFuPiA8YSBocmVmPSIkX0dbJ3NldHRpbmcnXVsnbW9iaWxlJ11bJ25vbW9iaWxldXJsJ10iPntsYW5nIHRvX2JlX2NvbnRpbnVlfTwvYT4KCQkJPC9kaXY+CgkJPCEtLXsvaWZ9LS0+CgkJPCEtLXtpZiAhZW1wdHkoJF9HWydzZXR0aW5nJ11bJ3Nob3J0Y3V0J10pICYmICRfR1snbWVtYmVyJ11bY3JlZGl0c10gPj0gJF9HWydzZXR0aW5nJ11bJ3Nob3J0Y3V0J119LS0+CgkJCTxkaXYgaWQ9InNob3J0Y3V0Ij4KCQkJCTxzcGFuPjxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgaWQ9InNob3J0Y3V0Y2xvc2VpZCIgdGl0bGU9IntsYW5nIGNsb3NlfSI+e2xhbmcgY2xvc2V9PC9hPjwvc3Bhbj4KCQkJCXtsYW5nIHNob3J0Y3V0X25vdGljZX0KCQkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgaWQ9InNob3J0Y3V0dGlwIj57bGFuZyBzaG9ydGN1dF9hZGR9PC9hPgoKCQkJPC9kaXY+CgkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5zZXRUaW1lb3V0KHNldFNob3J0Y3V0LCAyMDAwKTs8L3NjcmlwdD4KCQk8IS0tey9pZn0tLT4KCQk8ZGl2IGlkPSJ0b3B0YiIgY2xhc3M9ImNsIj4KCQkJPCEtLXtob29rL2dsb2JhbF9jcG5hdl90b3B9LS0+CgkJCTxkaXYgY2xhc3M9IndwIj4KCQkJCTxkaXYgY2xhc3M9InoiPgoJCQkJCTwhLS17bG9vcCAkX0dbJ3NldHRpbmcnXVsndG9wbmF2cyddWzBdICRuYXZ9LS0+CgkJCQkJCTwhLS17aWYgaXNfYXJyYXkoJG5hdikgJiYgJG5hdlsnYXZhaWxhYmxlJ10gJiYgKCEkbmF2WydsZXZlbCddIHx8ICgkbmF2WydsZXZlbCddID09IDEgJiYgJF9HWyd1aWQnXSkgfHwgKCRuYXZbJ2xldmVsJ10gPT0gMiAmJiAkX0dbJ2FkbWluaWQnXSA+IDApIHx8ICgkbmF2WydsZXZlbCddID09IDMgJiYgJF9HWydhZG1pbmlkJ10gPT0gMSkpfS0tPiRuYXZbY29kZV08IS0tey9pZn0tLT4KCQkJCQk8IS0tey9sb29wfS0tPgoJCQkJCTwhLS17aG9vay9nbG9iYWxfY3BuYXZfZXh0cmExfS0tPgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJ5Ij4KCQkJCQk8YSBpZD0ic3dpdGNoYmxpbmQiIGhyZWY9ImphdmFzY3JpcHQ6OyIgb25jbGljaz0idG9nZ2xlQmxpbmQodGhpcykiIHRpdGxlPSJ7bGFuZyBzd2l0Y2hfYmxpbmR9IiBjbGFzcz0ic3dpdGNoYmxpbmQiPjwvYT4KCQkJCQk8IS0te2hvb2svZ2xvYmFsX2NwbmF2X2V4dHJhMn0tLT4KCQkJCQk8IS0te2xvb3AgJF9HWydzZXR0aW5nJ11bJ3RvcG5hdnMnXVsxXSAkbmF2fS0tPgoJCQkJCQk8IS0te2lmIGlzX2FycmF5KCRuYXYpICYmICRuYXZbJ2F2YWlsYWJsZSddICYmICghJG5hdlsnbGV2ZWwnXSB8fCAoJG5hdlsnbGV2ZWwnXSA9PSAxICYmICRfR1sndWlkJ10pIHx8ICgkbmF2WydsZXZlbCddID09IDIgJiYgJF9HWydhZG1pbmlkJ10gPiAwKSB8fCAoJG5hdlsnbGV2ZWwnXSA9PSAzICYmICRfR1snYWRtaW5pZCddID09IDEpKX0tLT4kbmF2W2NvZGVdPCEtLXsvaWZ9LS0+CgkJCQkJPCEtLXsvbG9vcH0tLT4KCQkJCQk8IS0te2lmIGVtcHR5KCRfR1snZGlzYWJsZWR3aWR0aGF1dG8nXSkgJiYgJF9HWydzZXR0aW5nJ11bJ3N3aXRjaHdpZHRoYXV0byddfS0tPgoJCQkJCQk8YSBocmVmPSJqYXZhc2NyaXB0OjsiIGlkPSJzd2l0Y2h3aWR0aCIgb25jbGljaz0id2lkdGhhdXRvKHRoaXMpIiB0aXRsZT0ie2lmIHdpZHRoYXV0bygpfXtsYW5nIHN3aXRjaF9uYXJyb3d9e2Vsc2V9e2xhbmcgc3dpdGNoX3dpZGV9ey9pZn0iIGNsYXNzPSJzd2l0Y2h3aWR0aCI+PCEtLXtpZiB3aWR0aGF1dG8oKX0tLT57bGFuZyBzd2l0Y2hfbmFycm93fTwhLS17ZWxzZX0tLT57bGFuZyBzd2l0Y2hfd2lkZX08IS0tey9pZn0tLT48L2E+CgkJCQkJPCEtLXsvaWZ9LS0+CgkJCQkJPCEtLXtpZiAkX0dbJ3VpZCddICYmICFlbXB0eSgkX0dbJ3N0eWxlJ11bJ2V4dHN0eWxlJ10pfS0tPjxhIGlkPSJzc2xjdCIgaHJlZj0iamF2YXNjcmlwdDo7IiBvbm1vdXNlb3Zlcj0iZGVsYXlTaG93KHRoaXMsIGZ1bmN0aW9uKCkge3Nob3dNZW51KHsnY3RybGlkJzonc3NsY3QnLCdwb3MnOiczNCEnfSl9KTsiPntsYW5nIGNoYW5nZXN0eWxlfTwvYT48IS0tey9pZn0tLT4KCQkJCQk8IS0te2lmIGNoZWNrX2RpeV9wZXJtKCR0b3BpYyl9LS0+CgkJCQkJCSRkaXluYXYKCQkJCQk8IS0tey9pZn0tLT4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCgkJPCEtLXtpZiAhSVNfUk9CT1R9LS0+CgkJCTwhLS17aWYgJF9HWyd1aWQnXSAmJiAhJF9HWydzZXR0aW5nJ11bJ2JiY2xvc2VkJ10gJiYgZW1wdHkoJF9HWydtZW1iZXInXVsnZnJlZXplJ10pICYmICRfR1snbWVtYmVyJ11bJ2dyb3VwaWQnXSAhPSA1fS0tPgoJCQk8dWwgaWQ9Im15cHJvbXB0X21lbnUiIGNsYXNzPSJwX3BvcCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KCQkJCTxsaT48YSBocmVmPSJob21lLnBocD9tb2Q9c3BhY2UmZG89cG0iIGlkPSJwbV9udGMiIHN0eWxlPSJiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDUwJTsiPjxlbSBjbGFzcz0icHJvbXB0X25ld3N7aWYgZW1wdHkoJF9HW21lbWJlcl1bbmV3cG1dKX1fMHsvaWZ9Ij48L2VtPntsYW5nIHBtX2NlbnRlcn08L2E+PC9saT4KCQkJCTwhLS17aWYgJF9HWydzZXR0aW5nJ11bJ2ZvbGxvd3N0YXR1cyddfS0tPgoJCQkJCTxsaT48YSBocmVmPSJob21lLnBocD9tb2Q9Zm9sbG93JmRvPWZvbGxvd2VyIj48ZW0gY2xhc3M9InByb21wdF9mb2xsb3dlcntpZiBlbXB0eSgkX0dbbWVtYmVyXVtuZXdwcm9tcHRfbnVtXVtmb2xsb3dlcl0pfV8wey9pZn0iPjwvZW0+PCEtLXtsYW5nIG5vdGljZV9pbnRlcmFjdGl2ZV9mb2xsb3dlcn0tLT57aWYgJF9HW21lbWJlcl1bbmV3cHJvbXB0X251bV1bZm9sbG93ZXJdfSgkX0dbbWVtYmVyXVtuZXdwcm9tcHRfbnVtXVtmb2xsb3dlcl0pey9pZn08L2E+PC9saT4KCQkJCQk8IS0te2lmICRfR1ttZW1iZXJdW25ld3Byb21wdF0gJiYgJF9HW21lbWJlcl1bbmV3cHJvbXB0X251bV1bZm9sbG93XX0tLT4KCQkJCQkJPGxpPjxhIGhyZWY9ImhvbWUucGhwP21vZD1mb2xsb3ciPjxlbSBjbGFzcz0icHJvbXB0X2NvbmNlcm4iPjwvZW0+PCEtLXtsYW5nIG5vdGljZV9pbnRlcmFjdGl2ZV9mb2xsb3d9LS0+KCRfR1ttZW1iZXJdW25ld3Byb21wdF9udW1dW2ZvbGxvd10pPC9hPjwvbGk+CgkJCQkJPCEtLXsvaWZ9LS0+CgkJCQk8IS0tey9pZn0tLT4KCQkJCTwhLS17aWYgJF9HW21lbWJlcl1bbmV3cHJvbXB0XX0tLT4KCQkJCQk8IS0te2xvb3AgJF9HWydtZW1iZXInXVsnY2F0ZWdvcnlfbnVtJ10gJGtleSAkdmFsfS0tPgoJCQkJCQk8bGk+PGEgaHJlZj0iaG9tZS5waHA/bW9kPXNwYWNlJmRvPW5vdGljZSZ2aWV3PSRrZXkiPjxlbSBjbGFzcz0ibm90aWNlXyRrZXkiPjwvZW0+PCEtLXtlY2hvIGxhbmcoJ3RlbXBsYXRlJywgJ25vdGljZV8nLiRrZXkpfS0tPig8c3BhbiBjbGFzcz0icnEiPiR2YWw8L3NwYW4+KTwvYT48L2xpPgoJCQkJCTwhLS17L2xvb3B9LS0+CgkJCQk8IS0tey9pZn0tLT4KCQkJCTwhLS17aWYgZW1wdHkoJF9HWydjb29raWUnXVsnaWdub3JlX25vdGljZSddKX0tLT4KCQkJCQk8bGkgY2xhc3M9Imlnbm9yZV9ub3RpY2VsaSI+PGEgaHJlZj0iamF2YXNjcmlwdDo7IiBvbmNsaWNrPSJzZXRjb29raWUoJ2lnbm9yZV9ub3RpY2UnLCAxKTtoaWRlTWVudSgnbXlwcm9tcHRfbWVudScpIiB0aXRsZT0ie2xhbmcgdGVtcG9yYXJpbHlfdG9fcmVtaW5kfSI+PGVtIGNsYXNzPSJpZ25vcmVfbm90aWNlIj48L2VtPjwvYT48L2xpPgoJCQkJPCEtLXsvaWZ9LS0+CgkJCTwvdWw+CgkJCTwhLS17L2lmfS0tPgoJCQk8IS0te2lmICRfR1sndWlkJ10gJiYgIWVtcHR5KCRfR1snc3R5bGUnXVsnZXh0c3R5bGUnXSl9LS0+CgkJCQk8ZGl2IGlkPSJzc2xjdF9tZW51IiBjbGFzcz0iY2wgcF9wb3AiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJCQkJPCEtLXtpZiAhJF9HW3N0eWxlXVtkZWZhdWx0ZXh0c3R5bGVdfS0tPjxzcGFuIGNsYXNzPSJzc2xjdF9idG4iIG9uY2xpY2s9ImV4dHN0eWxlKCcnKSIgdGl0bGU9IntsYW5nIGRlZmF1bHR9Ij48aT48L2k+PC9zcGFuPjwhLS17L2lmfS0tPgoJCQkJCTwhLS17bG9vcCAkX0dbJ3N0eWxlJ11bJ2V4dHN0eWxlJ10gJGV4dHN0eWxlfS0tPgoJCQkJCQk8c3BhbiBjbGFzcz0ic3NsY3RfYnRuIiBvbmNsaWNrPSJleHRzdHlsZSgnJGV4dHN0eWxlWzBdJykiIHRpdGxlPSIkZXh0c3R5bGVbMV0iPjxpIHN0eWxlPSdiYWNrZ3JvdW5kOiRleHRzdHlsZVsyXSc+PC9pPjwvc3Bhbj4KCQkJCQk8IS0tey9sb29wfS0tPgoJCQkJPC9kaXY+CgkJCTwhLS17L2lmfS0tPgoJCQk8IS0te2lmICRfR1sndWlkJ119LS0+CgkJCQk8dWwgaWQ9Im15aXRlbV9tZW51IiBjbGFzcz0icF9wb3AiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJCQkJPCEtLXtpZiAkX0dbJ3NldHRpbmcnXVsnZm9ydW1zdGF0dXMnXX0tLT48bGk+PGEgaHJlZj0iaG9tZS5waHA/bW9kPXNwYWNlJmRvPXRocmVhZCZ2aWV3PW1lIj57bGFuZyBteXBvc3R9PC9hPjwvbGk+PCEtLXsvaWZ9LS0+CgkJCQkJPCEtLXtpZiAkX0dbJ3NldHRpbmcnXVsnZmF2b3JpdGVzdGF0dXMnXX0tLT48bGk+PGEgaHJlZj0iaG9tZS5waHA/bW9kPXNwYWNlJmRvPWZhdm9yaXRlJnZpZXc9bWUiPntsYW5nIGZhdm9yaXRlfTwvYT48L2xpPjwhLS17L2lmfS0tPgoJCQkJCTwhLS17aWYgJF9HWydzZXR0aW5nJ11bJ2ZyaWVuZHN0YXR1cyddfS0tPjxsaT48YSBocmVmPSJob21lLnBocD9tb2Q9c3BhY2UmZG89ZnJpZW5kIj57bGFuZyBmcmllbmRzfTwvYT48L2xpPjwhLS17L2lmfS0tPgoJCQkJCTwhLS17aG9vay9nbG9iYWxfbXlpdGVtX2V4dHJhfS0tPgoJCQkJPC91bD4KCQkJPCEtLXsvaWZ9LS0+CgkJCTwhLS17c3VidGVtcGxhdGUgY29tbW9uL2hlYWRlcl9xbWVudX0tLT4KCQk8IS0tey9pZn0tLT4KCgkJPCEtLXthZC9oZWFkZXJiYW5uZXIvd3AgYV9ofS0tPgoJCTxkaXYgaWQ9ImhkIj4KCQkJPGRpdiBjbGFzcz0id3AiPgoJCQkJPGRpdiBjbGFzcz0iaGRjIGNsIj4KCQkJCQk8IS0te2V2YWwgJG1uaWQgPSBnZXRjdXJyZW50bmF2KCk7fS0tPgoJCQkJCTxoMj48IS0te2lmICFpc3NldCgkX0dbJ3NldHRpbmcnXVsnbmF2bG9nb3MnXVskbW5pZF0pfS0tPjxhIGhyZWY9IntpZiAkX0dbJ3NldHRpbmcnXVsnZG9tYWluJ11bJ2FwcCddWydkZWZhdWx0J119eyRfR1snc2NoZW1lJ119Oi8veyRfR1snc2V0dGluZyddWydkb21haW4nXVsnYXBwJ11bJ2RlZmF1bHQnXX0ve2Vsc2V9Li97L2lmfSIgdGl0bGU9IiRfR1snc2V0dGluZyddWydiYm5hbWUnXSI+eyRfR1snc3R5bGUnXVsnYm9hcmRsb2dvJ119PC9hPjwhLS17ZWxzZX0tLT4kX0dbJ3NldHRpbmcnXVsnbmF2bG9nb3MnXVskbW5pZF08IS0tey9pZn0tLT48L2gyPgoJCQkJCTwhLS17dGVtcGxhdGUgY29tbW9uL2hlYWRlcl91c2Vyc3RhdHVzfS0tPgoJCQkJPC9kaXY+CgoJCQkJPGRpdiBpZD0ibnYiPgoJCQkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgaWQ9InFtZW51IiBvbm1vdXNlb3Zlcj0iZGVsYXlTaG93KHRoaXMsIGZ1bmN0aW9uICgpIHtzaG93TWVudSh7J2N0cmxpZCc6J3FtZW51JywncG9zJzonMzQhJywnY3RybGNsYXNzJzonYScsJ2R1cmF0aW9uJzoyfSk7c2hvd0ZvcnVtbWVudSgkX0dbZmlkXSk7fSkiPntsYW5nIG15X25hdn08L2E+CgkJCQkJPHVsPgoJCQkJCQk8IS0te2xvb3AgJF9HWydzZXR0aW5nJ11bJ25hdnMnXSAkbmF2fS0tPgoJCQkJCQkJPCEtLXtpZiBpc19hcnJheSgkbmF2KSAmJiAkbmF2WydhdmFpbGFibGUnXSAmJiAoISRuYXZbJ2xldmVsJ10gfHwgKCRuYXZbJ2xldmVsJ10gPT0gMSAmJiAkX0dbJ3VpZCddKSB8fCAoJG5hdlsnbGV2ZWwnXSA9PSAyICYmICRfR1snYWRtaW5pZCddID4gMCkgfHwgKCRuYXZbJ2xldmVsJ10gPT0gMyAmJiAkX0dbJ2FkbWluaWQnXSA9PSAxKSl9LS0+PGxpIHtpZiAkbW5pZCA9PSAkbmF2W25hdmlkXSB8fCBzdWJzdHIoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sIDEpID09IHN0cl9yZXBsYWNlKCcuLycsICcnLCAkbmF2W2ZpbGVuYW1lXSl9Y2xhc3M9ImEiIHsvaWZ9JG5hdltuYXZdPjwvbGk+PCEtLXsvaWZ9LS0+CgkJCQkJCTwhLS17L2xvb3B9LS0+CgkJCQkJPC91bD4KCQkJCQk8IS0te2hvb2svZ2xvYmFsX25hdl9leHRyYX0tLT4KCQkJCTwvZGl2PgoJCQkJPCEtLXtpZiAhZW1wdHkoJF9HWydzZXR0aW5nJ11bJ3BsdWdpbnMnXVsnanNtZW51J10pfS0tPgoJCQkJCTx1bCBjbGFzcz0icF9wb3AgaF9wb3AiIGlkPSJwbHVnaW5fbWVudSIgc3R5bGU9ImRpc3BsYXk6IG5vbmUiPgoJCQkJCTwhLS17bG9vcCAkX0dbJ3NldHRpbmcnXVsncGx1Z2lucyddWydqc21lbnUnXSAkbW9kdWxlfS0tPgoJCQkJCQkgPCEtLXtpZiBpbl9hcnJheSgkbW9kdWxlWydhZG1pbmlkJ10sIGFycmF5KDAsIC0xKSkgfHwgKCRtb2R1bGVbJ2FkbWluaWQnXSAmJiAkX0dbJ2FkbWluaWQnXSA+IDAgJiYgJG1vZHVsZVsnYWRtaW5pZCddID49ICRfR1snYWRtaW5pZCddKX0tLT4KCQkJCQkJIDxsaT4kbW9kdWxlW3VybF08L2xpPgoJCQkJCQkgPCEtLXsvaWZ9LS0+CgkJCQkJPCEtLXsvbG9vcH0tLT4KCQkJCQk8L3VsPgoJCQkJPCEtLXsvaWZ9LS0+CgkJCQkkX0dbc2V0dGluZ11bbWVudW5hdnNdCgkJCQk8ZGl2IGlkPSJtdSIgY2xhc3M9ImNsIj4KCQkJCTwhLS17aWYgJF9HWydzZXR0aW5nJ11bJ3N1Ym5hdnMnXX0tLT4KCQkJCQk8IS0te2xvb3AgJF9HW3NldHRpbmddW3N1Ym5hdnNdICRuYXZpZCAkc3VibmF2fS0tPgoJCQkJCQk8IS0te2lmICRfR1snc2V0dGluZyddWyduYXZzdWJob3ZlciddIHx8ICRtbmlkID09ICRuYXZpZH0tLT4KCQkJCQkJPHVsIGNsYXNzPSJjbCB7aWYgJG1uaWQgPT0gJG5hdmlkfWN1cnJlbnR7L2lmfSIgaWQ9InNuYXZfJG5hdmlkIntpZiAkbW5pZCAhPSAkbmF2aWR9IHN0eWxlPSJkaXNwbGF5Om5vbmUiey9pZn0+CgkJCQkJCSRzdWJuYXYKCQkJCQkJPC91bD4KCQkJCQkJPCEtLXsvaWZ9LS0+CgkJCQkJPCEtLXsvbG9vcH0tLT4KCQkJCTwhLS17L2lmfS0tPgoJCQkJPC9kaXY+CgkJCQk8IS0te2FkL3N1Ym5hdmJhbm5lci9hX211fS0tPgoJCQkJPCEtLXtzdWJ0ZW1wbGF0ZSBjb21tb24vcHVic2VhcmNoZm9ybX0tLT4KCQkJPC9kaXY+CgkJPC9kaXY+CgoJCTwhLS17aG9vay9nbG9iYWxfaGVhZGVyfS0tPgoJPCEtLXsvaWZ9LS0+CgoJPGRpdiBpZD0id3AiIGNsYXNzPSJ3cCI+Cg==
qidao123.com ToB IT社区-企服评测·应用市场»论坛 › 容器及微服务 › 容器及微服务 › 二进制安装Kubernetes(k8s)v1.31.1
返回列表 发新帖

二进制安装Kubernetes(k8s)v1.31.1

[复制链接]
发表于 2024-9-27 18:52:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
二进制安装Kubernetes(k8s)v1.31.1

介绍

https://github.com/cby-chen/Kubernetes 开源不易,帮助点个star,谢谢了
kubernetes(k8s)二进制高可用安装部署,支持IPv4+IPv6双栈。

剧烈建议在Github上查看文档 !!!

Github出问题会更新文档,而且后续尽可能第一时间更新新版本文档 !!!

手动项目所在:https://github.com/cby-chen/Kubernetes

1.情况

主机名称IP所在阐明软件192.168.1.60外网节点下载各种所需安装包Master01192.168.1.31master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、
kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxMaster02192.168.1.32master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、
kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxMaster03192.168.1.33master节点kube-apiserver、kube-controller-manager、kube-scheduler、etcd、
kubelet、kube-proxy、nfs-client、haproxy、keepalived、nginxNode01192.168.1.34node节点kubelet、kube-proxy、nfs-client、nginxNode02192.168.1.35node节点kubelet、kube-proxy、nfs-client、nginx192.168.1.36VIP网段
物理主机:192.168.1.0/24
service:10.96.0.0/12
pod:172.16.0.0/12
安装包已经整理好:https://mirrors.chenby.cn/https://github.com/cby-chen/Kubernetes/releases/download/v1.31.1/kubernetes-v1.31.1.tar
1.1.k8s底子系统情况设置

1.2.设置IP
  1. # 注意!
  2. # 若虚拟机是进行克隆的那么网卡的UUID和MachineID会重复
  3. # 需要重新生成新的UUIDUUID和MachineID
  4. # UUID和MachineID重复无法DHCP获取到IPV6地址
  5. ssh root@192.168.1.153 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
  6. ssh root@192.168.1.158 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
  7. ssh root@192.168.1.159 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
  8. ssh root@192.168.1.160 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
  9. ssh root@192.168.1.161 "rm -rf /etc/machine-id; systemd-machine-id-setup;reboot"
  10. #
  11. # 查看当前的网卡列表和 UUID:
  12. # nmcli con show
  13. # 删除要更改 UUID 的网络连接:
  14. # nmcli con delete uuid <原 UUID>
  15. # 重新生成 UUID:
  16. # nmcli con add type ethernet ifname <接口名称> con-name <新名称>
  17. # 重新启用网络连接:
  18. # nmcli con up <新名称>
  19. # 更改网卡的UUID
  20. # 先配置静态IP之后使用ssh方式配置不断连
  21. ssh root@192.168.1.153 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"
  22. ssh root@192.168.1.158 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"
  23. ssh root@192.168.1.159 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"
  24. ssh root@192.168.1.160 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"
  25. ssh root@192.168.1.161 "nmcli con delete uuid 628b03ed-3c1e-32ea-b001-eb5b8ac73285;nmcli con add type ethernet ifname ens18 con-name ens18;nmcli con up ens18"
  26. # 参数解释
  27. #
  28. # ssh ssh root@192.168.1.31
  29. # 使用SSH登录到IP为192.168.1.31的主机,使用root用户身份。
  30. #
  31. # nmcli con delete uuid 708a1497-2192-43a5-9f03-2ab936fb3c44
  32. # 删除 UUID 为 708a1497-2192-43a5-9f03-2ab936fb3c44 的网络连接,这是 NetworkManager 中一种特定网络配置的唯一标识符。
  33. #
  34. # nmcli con add type ethernet ifname ens18 con-name ens18
  35. # 添加一种以太网连接类型,并指定接口名为 ens18,连接名称也为 ens18。
  36. #
  37. # nmcli con up ens18
  38. # 开启 ens18 这个网络连接。
  39. #
  40. # 简单来说,这个命令的作用是删除一个特定的网络连接配置,并添加一个名为 ens18 的以太网连接,然后启用这个新的连接。
  41. # 修改静态的IPv4地址
  42. ssh root@192.168.1.153 "nmcli con mod ens18 ipv4.addresses 192.168.1.31/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
  43. ssh root@192.168.1.158 "nmcli con mod ens18 ipv4.addresses 192.168.1.32/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
  44. ssh root@192.168.1.159 "nmcli con mod ens18 ipv4.addresses 192.168.1.33/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
  45. ssh root@192.168.1.160 "nmcli con mod ens18 ipv4.addresses 192.168.1.34/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
  46. ssh root@192.168.1.161 "nmcli con mod ens18 ipv4.addresses 192.168.1.35/24; nmcli con mod ens18 ipv4.gateway  192.168.1.1; nmcli con mod ens18 ipv4.method manual; nmcli con mod ens18 ipv4.dns "8.8.8.8"; nmcli con up ens18"
  47. # 参数解释
  48. #
  49. # ssh root@192.168.1.154
  50. # 使用SSH登录到IP为192.168.1.154的主机,使用root用户身份。
  51. #
  52. # "nmcli con mod ens18 ipv4.addresses 192.168.1.31/24"
  53. # 修改ens18网络连接的IPv4地址为192.168.1.31,子网掩码为 24。
  54. #
  55. # "nmcli con mod ens18 ipv4.gateway 192.168.1.1"
  56. # 修改ens18网络连接的IPv4网关为192.168.1.1。
  57. #
  58. # "nmcli con mod ens18 ipv4.method manual"
  59. # 将ens18网络连接的IPv4配置方法设置为手动。
  60. #
  61. # "nmcli con mod ens18 ipv4.dns "8.8.8.8"
  62. # 将ens18网络连接的IPv4 DNS服务器设置为 8.8.8.8。
  63. #
  64. # "nmcli con up ens18"
  65. # 启动ens18网络连接。
  66. #
  67. # 总体来说,这条命令是通过SSH远程登录到指定的主机,并使用网络管理命令 (nmcli) 修改ens18网络连接的配置,包括IP地址、网关、配置方法和DNS服务器,并启动该网络连接。
  68. # 没有固定IPv6选择不配置即可
  69. ssh root@192.168.1.31 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::10; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"
  70. ssh root@192.168.1.32 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::20; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"
  71. ssh root@192.168.1.33 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::30; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"
  72. ssh root@192.168.1.34 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::40; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"
  73. ssh root@192.168.1.35 "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::50; nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1; nmcli con mod ens18 ipv6.method manual; nmcli con mod ens18 ipv6.dns "2400:3200::1"; nmcli con up ens18"
  74. # 参数解释
  75. #
  76. # ssh root@192.168.1.31
  77. # 通过SSH连接到IP地址为192.168.1.31的远程主机,使用root用户进行登录。
  78. #
  79. # "nmcli con mod ens18 ipv6.addresses fc00:43f4:1eea:1::10"
  80. # 使用nmcli命令修改ens18接口的IPv6地址为fc00:43f4:1eea:1::10。
  81. #
  82. # "nmcli con mod ens18 ipv6.gateway fc00:43f4:1eea:1::1"
  83. # 使用nmcli命令修改ens18接口的IPv6网关为fc00:43f4:1eea:1::1。
  84. #
  85. # "nmcli con mod ens18 ipv6.method manual"
  86. # 使用nmcli命令将ens18接口的IPv6配置方法修改为手动配置。
  87. #
  88. # "nmcli con mod ens18 ipv6.dns "2400:3200::1"
  89. # 使用nmcli命令设置ens18接口的IPv6 DNS服务器为2400:3200::1。
  90. #
  91. # "nmcli con up ens18"
  92. # 使用nmcli命令启动ens18接口。
  93. #
  94. # 这个命令的目的是在远程主机上配置ens18接口的IPv6地址、网关、配置方法和DNS服务器,并启动ens18接口。
  95. # 查看网卡配置
  96. # nmcli device show ens18
  97. # nmcli con show ens18
  98. [root@localhost ~]#  cat /etc/NetworkManager/system-connections/ens18.nmconnection
  99. [connection]
  100. id=ens18
  101. uuid=97445eea-70e8-47a7-8be4-a707de271f5e
  102. type=ethernet
  103. interface-name=ens18
  104. timestamp=1716705021
  105. [ethernet]
  106. [ipv4]
  107. address1=192.168.1.31/24,192.168.1.1
  108. dns=8.8.8.8;
  109. method=manual
  110. [ipv6]
  111. addr-gen-mode=default
  112. method=auto
  113. [proxy]
  114. [root@localhost ~]#
  115. # 参数解释
  116. # 1. `[connection]`:
  117. #    - `id`: 连接的唯一标识符,用于内部引用。
  118. #    - `uuid`: 连接的通用唯一标识符(UUID),确保在系统中的唯一性。
  119. #    - `type`: 指定连接的类型,本例中为以太网。
  120. #    - `interface-name`: 网络接口的名称(`ens18`),表示与此连接关联的物理或逻辑网络接口。
  121. #    - `timestamp`: 时间戳,指示连接配置上次修改的时间。
  122. # 2. `[ethernet]`:
  123. #    - 通常包含以太网特定的配置设置,如MAC地址或链路速度。
  124. # 3. `[ipv4]`:
  125. #    - `address1`: 以CIDR表示法指定IPv4地址和子网掩码(`192.168.1.31/24`)。还包括网关IP(`192.168.1.1`)。
  126. #    - `dns`: 指定要使用的DNS服务器(本例中为`8.8.8.8`),提供将域名转换为IP地址的手段。
  127. #    - `method`: 指定获取IPv4地址的方法。在本例中,设置为手动,表示IP地址是静态配置的。
  128. # 4. `[ipv6]`:
  129. #    - `addr-gen-mode`: 指定IPv6地址生成模式。设置为默认,通常意味着地址是根据接口的MAC地址生成的。
  130. #    - `method`: 指定获取IPv6地址的方法。在本例中,设置为自动,表示使用DHCPv6或SLAAC等协议进行自动配置。
  131. # 5. `[proxy]`:
  132. #    - 通常用于配置代理设置,如HTTP或SOCKS代理。
复制代码
1.3.设置主机名
  1. hostnamectl set-hostname k8s-master01
  2. hostnamectl set-hostname k8s-master02
  3. hostnamectl set-hostname k8s-master03
  4. hostnamectl set-hostname k8s-node01
  5. hostnamectl set-hostname k8s-node02
  6. # 参数解释
  7. #
  8. # 参数: set-hostname
  9. # 解释: 这是hostnamectl命令的一个参数,用于设置系统的主机名。
  10. #
  11. # 参数: k8s-master01
  12. # 解释: 这是要设置的主机名,将系统的主机名设置为"k8s-master01"。
复制代码
1.4.设置yum源
  1. # 其他系统的源地址
  2. # https://help.mirrors.cernet.edu.cn/
  3. # 对于私有仓库
  4. sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://mirror.centos.org/\$contentdir|baseurl=http://192.168.1.123/centos|g' -i.bak  /etc/yum.repos.d/CentOS-*.repo
  5. # 对于 Ubuntu
  6. sed -i 's/cn.archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
  7. # epel扩展源
  8. sudo yum install -y epel-release
  9. sudo sed -e 's!^metalink=!#metalink=!g' \
  10.     -e 's!^#baseurl=!baseurl=!g' \
  11.     -e 's!https\?://download\.fedoraproject\.org/pub/epel!https://mirror.nju.edu.cn/epel!g' \
  12.     -e 's!https\?://download\.example/pub/epel!https://mirror.nju.edu.cn/epel!g' \
  13.     -i /etc/yum.repos.d/epel{,-testing}.repo
  14. # 对于 CentOS 7
  15. sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
  16.          -e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirror.nju.edu.cn/centos|g' \
  17.          -i.bak \
  18.          /etc/yum.repos.d/CentOS-*.repo
  19. # 对于 CentOS 8
  20. sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
  21.          -e 's|^#baseurl=http://mirror.centos.org/$contentdir|baseurl=https://mirror.nju.edu.cn/centos|g' \
  22.          -i.bak \
  23.          /etc/yum.repos.d/CentOS-*.repo
  24. # 对于CentOS 9
  25. cat <<'EOF' > /etc/yum.repos.d/centos.repo
  26. [baseos]
  27. name=CentOS Stream $releasever - BaseOS
  28. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/BaseOS/$basearch/os
  29. # metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-$stream&arch=$basearch&protocol=https,http
  30. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  31. gpgcheck=1
  32. repo_gpgcheck=0
  33. metadata_expire=6h
  34. countme=1
  35. enabled=1
  36. [baseos-debuginfo]
  37. name=CentOS Stream $releasever - BaseOS - Debug
  38. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/BaseOS/$basearch/debug/tree/
  39. # metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-debug-$stream&arch=$basearch&protocol=https,http
  40. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  41. gpgcheck=1
  42. repo_gpgcheck=0
  43. metadata_expire=6h
  44. enabled=0
  45. [baseos-source]
  46. name=CentOS Stream $releasever - BaseOS - Source
  47. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/BaseOS/source/tree/
  48. # metalink=https://mirrors.centos.org/metalink?repo=centos-baseos-source-$stream&arch=source&protocol=https,http
  49. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  50. gpgcheck=1
  51. repo_gpgcheck=0
  52. metadata_expire=6h
  53. enabled=0
  54. [appstream]
  55. name=CentOS Stream $releasever - AppStream
  56. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/AppStream/$basearch/os
  57. # metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-$stream&arch=$basearch&protocol=https,http
  58. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  59. gpgcheck=1
  60. repo_gpgcheck=0
  61. metadata_expire=6h
  62. countme=1
  63. enabled=1
  64. [appstream-debuginfo]
  65. name=CentOS Stream $releasever - AppStream - Debug
  66. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/AppStream/$basearch/debug/tree/
  67. # metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-debug-$stream&arch=$basearch&protocol=https,http
  68. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  69. gpgcheck=1
  70. repo_gpgcheck=0
  71. metadata_expire=6h
  72. enabled=0
  73. [appstream-source]
  74. name=CentOS Stream $releasever - AppStream - Source
  75. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/AppStream/source/tree/
  76. # metalink=https://mirrors.centos.org/metalink?repo=centos-appstream-source-$stream&arch=source&protocol=https,http
  77. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  78. gpgcheck=1
  79. repo_gpgcheck=0
  80. metadata_expire=6h
  81. enabled=0
  82. [crb]
  83. name=CentOS Stream $releasever - CRB
  84. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/CRB/$basearch/os
  85. # metalink=https://mirrors.centos.org/metalink?repo=centos-crb-$stream&arch=$basearch&protocol=https,http
  86. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  87. gpgcheck=1
  88. repo_gpgcheck=0
  89. metadata_expire=6h
  90. countme=1
  91. enabled=1
  92. [crb-debuginfo]
  93. name=CentOS Stream $releasever - CRB - Debug
  94. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/CRB/$basearch/debug/tree/
  95. # metalink=https://mirrors.centos.org/metalink?repo=centos-crb-debug-$stream&arch=$basearch&protocol=https,http
  96. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  97. gpgcheck=1
  98. repo_gpgcheck=0
  99. metadata_expire=6h
  100. enabled=0
  101. [crb-source]
  102. name=CentOS Stream $releasever - CRB - Source
  103. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/CRB/source/tree/
  104. # metalink=https://mirrors.centos.org/metalink?repo=centos-crb-source-$stream&arch=source&protocol=https,http
  105. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  106. gpgcheck=1
  107. repo_gpgcheck=0
  108. metadata_expire=6h
  109. enabled=0
  110. EOF
  111. cat <<'EOF' > /etc/yum.repos.d/centos-addons.repo
  112. [highavailability]
  113. name=CentOS Stream $releasever - HighAvailability
  114. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/HighAvailability/$basearch/os
  115. # metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-$stream&arch=$basearch&protocol=https,http
  116. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  117. gpgcheck=1
  118. repo_gpgcheck=0
  119. metadata_expire=6h
  120. countme=1
  121. enabled=0
  122. [highavailability-debuginfo]
  123. name=CentOS Stream $releasever - HighAvailability - Debug
  124. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/HighAvailability/$basearch/debug/tree/
  125. # metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-debug-$stream&arch=$basearch&protocol=https,http
  126. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  127. gpgcheck=1
  128. repo_gpgcheck=0
  129. metadata_expire=6h
  130. enabled=0
  131. [highavailability-source]
  132. name=CentOS Stream $releasever - HighAvailability - Source
  133. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/HighAvailability/source/tree/
  134. # metalink=https://mirrors.centos.org/metalink?repo=centos-highavailability-source-$stream&arch=source&protocol=https,http
  135. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  136. gpgcheck=1
  137. repo_gpgcheck=0
  138. metadata_expire=6h
  139. enabled=0
  140. [nfv]
  141. name=CentOS Stream $releasever - NFV
  142. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/NFV/$basearch/os
  143. # metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-$stream&arch=$basearch&protocol=https,http
  144. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  145. gpgcheck=1
  146. repo_gpgcheck=0
  147. metadata_expire=6h
  148. countme=1
  149. enabled=0
  150. [nfv-debuginfo]
  151. name=CentOS Stream $releasever - NFV - Debug
  152. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/NFV/$basearch/debug/tree/
  153. # metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-debug-$stream&arch=$basearch&protocol=https,http
  154. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  155. gpgcheck=1
  156. repo_gpgcheck=0
  157. metadata_expire=6h
  158. enabled=0
  159. [nfv-source]
  160. name=CentOS Stream $releasever - NFV - Source
  161. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/NFV/source/tree/
  162. # metalink=https://mirrors.centos.org/metalink?repo=centos-nfv-source-$stream&arch=source&protocol=https,http
  163. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  164. gpgcheck=1
  165. repo_gpgcheck=0
  166. metadata_expire=6h
  167. enabled=0
  168. [rt]
  169. name=CentOS Stream $releasever - RT
  170. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/RT/$basearch/os
  171. # metalink=https://mirrors.centos.org/metalink?repo=centos-rt-$stream&arch=$basearch&protocol=https,http
  172. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  173. gpgcheck=1
  174. repo_gpgcheck=0
  175. metadata_expire=6h
  176. countme=1
  177. enabled=0
  178. [rt-debuginfo]
  179. name=CentOS Stream $releasever - RT - Debug
  180. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/RT/$basearch/debug/tree/
  181. # metalink=https://mirrors.centos.org/metalink?repo=centos-rt-debug-$stream&arch=$basearch&protocol=https,http
  182. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  183. gpgcheck=1
  184. repo_gpgcheck=0
  185. metadata_expire=6h
  186. enabled=0
  187. [rt-source]
  188. name=CentOS Stream $releasever - RT - Source
  189. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/RT/source/tree/
  190. # metalink=https://mirrors.centos.org/metalink?repo=centos-rt-source-$stream&arch=source&protocol=https,http
  191. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  192. gpgcheck=1
  193. repo_gpgcheck=0
  194. metadata_expire=6h
  195. enabled=0
  196. [resilientstorage]
  197. name=CentOS Stream $releasever - ResilientStorage
  198. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/ResilientStorage/$basearch/os
  199. # metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-$stream&arch=$basearch&protocol=https,http
  200. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  201. gpgcheck=1
  202. repo_gpgcheck=0
  203. metadata_expire=6h
  204. countme=1
  205. enabled=0
  206. [resilientstorage-debuginfo]
  207. name=CentOS Stream $releasever - ResilientStorage - Debug
  208. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/ResilientStorage/$basearch/debug/tree/
  209. # metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-debug-$stream&arch=$basearch&protocol=https,http
  210. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  211. gpgcheck=1
  212. repo_gpgcheck=0
  213. metadata_expire=6h
  214. enabled=0
  215. [resilientstorage-source]
  216. name=CentOS Stream $releasever - ResilientStorage - Source
  217. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/$releasever-stream/ResilientStorage/source/tree/
  218. # metalink=https://mirrors.centos.org/metalink?repo=centos-resilientstorage-source-$stream&arch=source&protocol=https,http
  219. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
  220. gpgcheck=1
  221. repo_gpgcheck=0
  222. metadata_expire=6h
  223. enabled=0
  224. [extras-common]
  225. name=CentOS Stream $releasever - Extras packages
  226. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/SIGs/$releasever-stream/extras/$basearch/extras-common
  227. # metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-$stream&arch=$basearch&protocol=https,http
  228. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
  229. gpgcheck=1
  230. repo_gpgcheck=0
  231. metadata_expire=6h
  232. countme=1
  233. enabled=1
  234. [extras-common-source]
  235. name=CentOS Stream $releasever - Extras packages - Source
  236. baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-stream/SIGs/$releasever-stream/extras/source/extras-common
  237. # metalink=https://mirrors.centos.org/metalink?repo=centos-extras-sig-extras-common-source-$stream&arch=source&protocol=https,http
  238. gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
  239. gpgcheck=1
  240. repo_gpgcheck=0
  241. metadata_expire=6h
  242. enabled=0
  243. EOF
复制代码
1.6.选择性下载需要工具
  1. # 对于 Ubuntu
  2. apt update && apt upgrade -y && apt install -y wget psmisc vim net-tools nfs-kernel-server telnet lvm2 git tar curl
  3. # 对于 CentOS 7
  4. yum update -y && yum -y install  wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl
  5. # 对于 CentOS 8
  6. yum update -y && yum -y install wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl
  7. # 对于 CentOS 9
  8. yum update -y && yum -y install wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl
复制代码
1.7.关闭防火墙
  1. # 下载必要工具
  2. yum -y install createrepo yum-utils wget epel*
  3. # 下载全量依赖包
  4. repotrack createrepo wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl gcc keepalived haproxy bash-completion chrony sshpass ipvsadm ipset sysstat conntrack libseccomp
  5. # 删除libseccomp
  6. rm -rf libseccomp-*.rpm
  7. # 下载libseccomp
  8. wget http://rpmfind.net/linux/centos/8-stream/BaseOS/x86_64/os/Packages/libseccomp-2.5.1-1.el8.x86_64.rpm
  9. # 创建yum源信息
  10. createrepo -u -d /data/centos7/
  11. # 拷贝包到内网机器上
  12. scp -r /data/centos7/ root@192.168.1.31:
  13. scp -r /data/centos7/ root@192.168.1.32:
  14. scp -r /data/centos7/ root@192.168.1.33:
  15. scp -r /data/centos7/ root@192.168.1.34:
  16. scp -r /data/centos7/ root@192.168.1.35:
  17. # 在内网机器上创建repo配置文件
  18. rm -rf /etc/yum.repos.d/*
  19. cat > /etc/yum.repos.d/123.repo  << EOF
  20. [cby]
  21. name=CentOS-$releasever - Media
  22. baseurl=file:///root/centos7/
  23. gpgcheck=0
  24. enabled=1
  25. EOF
  26. # 安装下载好的包
  27. yum clean all
  28. yum makecache
  29. yum install /root/centos7/* --skip-broken -y
  30. #### 备注 #####
  31. # 安装完成后,可能还会出现yum无法使用那么再次执行
  32. rm -rf /etc/yum.repos.d/*
  33. cat > /etc/yum.repos.d/123.repo  << EOF
  34. [cby]
  35. name=CentOS-$releasever - Media
  36. baseurl=file:///root/centos7/
  37. gpgcheck=0
  38. enabled=1
  39. EOF
  40. yum clean all
  41. yum makecache
  42. yum install /root/centos7/*.rpm --skip-broken -y
  43. #### 备注 #####
  44. # 安装 chrony 和 libseccomp
  45. # yum install /root/centos7/libseccomp-2.5.1*.rpm -y
  46. # yum install /root/centos7/chrony-*.rpm -y
复制代码
1.8.关闭SELinux
  1. # 下载必要工具
  2. yum -y install createrepo yum-utils wget epel*
  3. # 下载全量依赖包
  4. repotrack wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git network-scripts tar curl gcc keepalived haproxy bash-completion chrony sshpass ipvsadm ipset sysstat conntrack libseccomp
  5. # 创建yum源信息
  6. createrepo -u -d /data/centos8/
  7. # 拷贝包到内网机器上
  8. scp -r centos8/ root@192.168.1.31:
  9. scp -r centos8/ root@192.168.1.32:
  10. scp -r centos8/ root@192.168.1.33:
  11. scp -r centos8/ root@192.168.1.34:
  12. scp -r centos8/ root@192.168.1.35:
  13. # 在内网机器上创建repo配置文件
  14. rm -rf /etc/yum.repos.d/*
  15. cat > /etc/yum.repos.d/123.repo  << EOF
  16. [cby]
  17. name=CentOS-$releasever - Media
  18. baseurl=file:///root/centos8/
  19. gpgcheck=0
  20. enabled=1
  21. EOF
  22. # 安装下载好的包
  23. yum clean all
  24. yum makecache
  25. yum install /root/centos8/* --skip-broken -y
  26. #### 备注 #####
  27. # 安装完成后,可能还会出现yum无法使用那么再次执行
  28. rm -rf /etc/yum.repos.d/*
  29. cat > /etc/yum.repos.d/123.repo  << EOF
  30. [cby]
  31. name=CentOS-$releasever - Media
  32. baseurl=file:///root/centos8/
  33. gpgcheck=0
  34. enabled=1
  35. EOF
  36. yum clean all
  37. yum makecache
  38. yum install /root/centos8/*.rpm --skip-broken -y
复制代码
1.9.关闭交换分区
  1. # 下载必要工具
  2. yum -y install createrepo yum-utils wget epel*
  3. # 下载全量依赖包
  4. repotrack wget psmisc vim net-tools nfs-utils telnet yum-utils device-mapper-persistent-data lvm2 git tar curl
  5. # 创建yum源信息
  6. createrepo -u -d centos9/
  7. # 拷贝包到内网机器上
  8. scp -r centos9/ root@192.168.1.31:
  9. scp -r centos9/ root@192.168.1.32:
  10. scp -r centos9/ root@192.168.1.33:
  11. scp -r centos9/ root@192.168.1.34:
  12. scp -r centos9/ root@192.168.1.35:
  13. # 在内网机器上创建repo配置文件
  14. rm -rf /etc/yum.repos.d/*
  15. cat > /etc/yum.repos.d/123.repo  << EOF
  16. [cby]
  17. name=CentOS-$releasever - Media
  18. baseurl=file:///root/centos9/
  19. gpgcheck=0
  20. enabled=1
  21. EOF
  22. # 安装下载好的包
  23. yum clean all
  24. yum makecache
  25. yum install /root/centos9/*.rpm --skip-broken -y
复制代码
1.10.网络设置(俩种方式二选一)

[code]# Ubuntu忽略,CentOS执行,CentOS9不支持方式一# 方式一# systemctl disable --now NetworkManager# systemctl start network && systemctl enable network# 方式二cat > /etc/NetworkManager/conf.d/calico.conf  /etc/chrony.conf  /etc/chrony.conf > /etc/security/limits.conf  /etc/modules-load.d/ipvs.conf
回复

使用道具 举报

返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录

QQ|手机版|qidao123.com IT社区;IT企服评测▪应用市场 ( 浙ICP备20004199|浙ICP备20004199号 )|网站地图

GMT+8, 2026-11-14 09:38 , Processed in 0.030669 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表