{"id":13439454,"url":"https://github.com/lework/kainstall","last_synced_at":"2025-05-16T05:07:48.552Z","repository":{"id":37100639,"uuid":"296580317","full_name":"lework/kainstall","owner":"lework","description":"Use shell scripts to install kubernetes(k8s) high availability clusters and addon components based on kubeadmin with one click.使用shell脚本基于kubeadmin一键安装kubernetes 高可用集群和addon组件。","archived":false,"fork":false,"pushed_at":"2024-01-05T08:47:34.000Z","size":229,"stargazers_count":1041,"open_issues_count":8,"forks_count":261,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-08T15:11:32.986Z","etag":null,"topics":["bash","install","kainstall","kubeadm","kubeadmin-kubernetes","kubernetes","kubernetes-cluster","kubernetes-install","kubernetes-setup"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lework.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2020-09-18T09:47:29.000Z","updated_at":"2025-04-07T01:15:32.000Z","dependencies_parsed_at":"2024-01-14T15:22:55.738Z","dependency_job_id":"8cae985c-7545-4286-81bb-f648f7b54a37","html_url":"https://github.com/lework/kainstall","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lework%2Fkainstall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lework%2Fkainstall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lework%2Fkainstall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lework%2Fkainstall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lework","download_url":"https://codeload.github.com/lework/kainstall/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254471059,"owners_count":22076585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","install","kainstall","kubeadm","kubeadmin-kubernetes","kubernetes","kubernetes-cluster","kubernetes-install","kubernetes-setup"],"created_at":"2024-07-31T03:01:14.053Z","updated_at":"2025-05-16T05:07:43.536Z","avatar_url":"https://github.com/lework.png","language":"Shell","funding_links":[],"categories":["HarmonyOS","Shell","bash"],"sub_categories":["Windows Manager"],"readme":"# kainstall  =  kubeadm install kubernetes\n\n[![GitHub Super-Linter](https://github.com/lework/kainstall/workflows/Lint%20Code%20Base/badge.svg)](https://github.com/marketplace/actions/super-linter)\n\n使用 shell 脚本, 基于 kubeadm 一键部署 kubernetes HA 集群\n\n## 为什么\n\n**为什么要搞这个？Ansible PlayBook 不好么？**\n\n**因为懒**，Ansible PlayBook 编排是非常给力的，不过需要安装 Python 和 Ansible, 且需要下载多个 yaml 文件 。**因为懒**，我想要个更简单的方式来**快速部署**一个分布式的 **Kubernetes HA** 集群， 使用 **shell** 脚本可以不借助外力直接在服务器上运行，省时省力。 并且 shell 脚本只有一个文件，文件大小**100 KB 左右**，非常小巧，可以实现一条命令安装集群的超快体验，而且配合**离线安装包**，可以在不联网的环境下安装集群，这体验真的**非常爽**啊。\n\n## 要求\n\nOS: `centos 7.x x64` , `centos 8.x x64`,  `debian 9.x x64` , `debian 10.x x64`, `ubuntu 20.04 x64`, `ubuntu 20.10 x64`, `ubuntu 21.04 x64`\n\nCPU: `2C`\n\nMEM: `4G`\n\n认证: 集群节点需**统一认证**; 使用密码认证时，集群节点需使用同一用户名和密码，使用密钥认证时，集群节点需使用同一个密钥文件登陆。\n\n\u003e 未指定离线包时，需要连通外网，用于下载 kube 组件和 docker 镜像。\n\n## 架构\n\n![k8s-node-ha](./images/k8s-node-ha.png)\n\n\u003e 如需按照步骤安装集群，可参考 [https://lework.github.io/2019/10/01/kubeadm-install/](https://lework.github.io/2019/10/01/kubeadm-install/)\n\n## 功能\n\n- 服务器初始化。\n  - 关闭 `selinux`\n  - 关闭 `swap`\n  - 关闭 `firewalld`\n  - 配置 `epel` 源\n  - 修改 `limits`\n  - 配置内核参数\n  - 配置 `history` 记录\n  - 配置 `journal` 日志\n  - 配置 `chrony` 时间同步\n  - 添加 `ssh-login-info` 信息\n  - 配置 `audit` 审计\n  - 安装 `ipvs` 模块\n  - 更新内核\n- 安装`kube`组件。\n- 初始化`kubernetes`集群,以及增加或删除节点。\n- 安装`ingress`组件，可选`nginx`，`traefik`。\n- 安装`network`组件，可选`flannel`，`calico`，`cilium`。\n- 安装`monitor`组件，可选`prometheus`。\n- 安装`log`组件，可选`elasticsearch`。\n- 安装`storage`组件，可选`rook`，`longhorn`。\n- 安装`web ui`组件，可选`dashboard`, `kubesphere`。\n- 安装`addon`组件，可选`metrics-server`, `nodelocaldns`。\n- 安装`cri`组件，可选`docker`, `containerd`, `cri-o`\n- 升级到`kubernetes`指定版本。\n- 更新集群证书。\n- 添加运维操作，如备份etcd快照。\n- 支持**离线部署**。\n- 支持**sudo特权**。\n- 支持**10年证书期限**。\n- 支持脚本更新。\n\n## 默认版本\n\n| 分类                                           | 软件                                             | kainstall 默认版本 | 软件最新版本                                                 |\n| ------------------------------------------------ | ------------------ | ------------------------------------------------------------ | ------------------------------------------------ |\n| common | [containerd](https://github.com/containerd/containerd) | latest             | ![docker-ce release](https://img.shields.io/github/v/release/containerd/containerd?sort=semver) |\n| common | [kubernetes](https://github.com/kubernetes/kubernetes) | latest             | ![kubernetes release](https://img.shields.io/github/v/release/kubernetes/kubernetes?sort=semver) |\n| network | [flannel](https://github.com/coreos/flannel) | 0.24.0         | ![flannel release](https://img.shields.io/github/v/release/coreos/flannel) |\n| network | [calico](https://github.com/projectcalico/calico) | 3.27.0 | ![calico release ](https://img.shields.io/github/v/release/projectcalico/calico?sort=semver) |\n| network | [cilium](https://github.com/cilium/cilium) | 1.14.5 | ![cilium release ](https://img.shields.io/github/v/release/cilium/cilium?sort=semver) |\n| addons | [metrics server](https://github.com/kubernetes-sigs/metrics-server) | 0.6.4             | ![metrics-server release](https://img.shields.io/github/v/release/kubernetes-sigs/metrics-server) |\n| addons | [nodelocaldns](https://github.com/kubernetes/dns/tree/master/cmd/node-cache) | latest           | 1.22.28                                                      |\n| ingress | [ingress nginx controller](https://github.com/kubernetes/ingress-nginx) | 1.9.5        | ![ingress-nginx release](https://img.shields.io/github/v/release/kubernetes/ingress-nginx) |\n| ingress | [traefik](https://github.com/traefik/traefik) | 2.10.7      | ![traefik release ](https://img.shields.io/github/v/release/traefik/traefik?sort=semver) |\n| monitor | [kube_prometheus](https://github.com/prometheus-operator/kube-prometheus) | 0.13.0             | ![kube-prometheus release](https://img.shields.io/github/v/release/prometheus-operator/kube-prometheus) |\n| log | [elasticsearch](https://github.com/elastic/elasticsearch) | 8.11.3      | ![elasticsearch release](https://img.shields.io/github/v/release/elastic/elasticsearch?sort=semver) |\n| storage | [rook](https://github.com/rook/rook) | 1.13.1 | ![rook release](https://img.shields.io/github/v/release/rook/rook?sort=semver) |\n| storage | [longhorn](https://github.com/longhorn/longhorn) | 1.5.3 | ![longhorn release](https://img.shields.io/github/v/release/longhorn/longhorn?sort=semver) |\n| ui | [kubernetes_dashboard](https://github.com/kubernetes/dashboard) | 2.7.0            | ![kubernetes dashboard release](https://img.shields.io/github/v/release/kubernetes/dashboard?sort=semver) |\n| ui | [kubesphere](https://github.com/kubesphere/kubesphere) | 3.3.0            | ![kubesphere release](https://img.shields.io/github/v/release/kubesphere/kubesphere?sort=semver) |\n\n除 **kube组件** 版本可以通过参数(`--version`) 指定外，其他的软件版本需在脚本中指定。\n\n## 使用\n\n\u003e 案例使用请见：[https://lework.github.io/2020/09/26/kainstall](https://lework.github.io/2020/09/26/kainstall)\n\n### 下载脚本\n\n```bash\n# centos\nwget https://ghproxy.com/https://raw.githubusercontent.com/lework/kainstall/master/kainstall-centos.sh\n\n# debian\nwget https://ghproxy.com/https://raw.githubusercontent.com/lework/kainstall/master/kainstall-debian.sh\n\n# ubuntu\nwget https://ghproxy.com/https://raw.githubusercontent.com/lework/kainstall/master/kainstall-ubuntu.sh\n```\n\n### 帮助信息\n\n```bash\n# bash kainstall-centos.sh\n\n\nInstall kubernetes cluster using kubeadm.\n\nUsage:\n  kainstall-centos.sh [command]\n\nAvailable Commands:\n  init            Init Kubernetes cluster.\n  reset           Reset Kubernetes cluster.\n  add             Add nodes to the cluster.\n  del             Remove node from the cluster.\n  renew-cert      Renew all available certificates.\n  upgrade         Upgrading kubeadm clusters.\n  update          Update script file.\n\nFlag:\n  -m,--master          master node, default: ''\n  -w,--worker          work node, default: ''\n  -u,--user            ssh user, default: root\n  -p,--password        ssh password\n     --private-key     ssh private key\n  -P,--port            ssh port, default: 22\n  -v,--version         kube version, default: latest\n  -n,--network         cluster network, choose: [flannel,calico,cilium], default: flannel\n  -i,--ingress         ingress controller, choose: [nginx,traefik], default: nginx\n  -ui,--ui             cluster web ui, choose: [dashboard,kubesphere], default: dashboard\n  -a,--addon           cluster add-ons, choose: [metrics-server,nodelocaldns], default: metrics-server\n  -M,--monitor         cluster monitor, choose: [prometheus]\n  -l,--log             cluster log, choose: [elasticsearch]\n  -s,--storage         cluster storage, choose: [rook,longhorn]\n     --cri             cri runtime, choose: [docker,containerd,cri-o], default: containerd\n     --cri-version     cri version, default: latest\n     --cri-endpoint    cri endpoint, default: /var/run/dockershim.sock\n  -U,--upgrade-kernel  upgrade kernel\n  -of,--offline-file   specify the offline package file to load\n      --10years        the certificate period is 10 years.\n      --sudo           sudo mode\n      --sudo-user      sudo user\n      --sudo-password  sudo user password\n\nExample:\n  [init cluster]\n  kainstall-centos.sh init \\\n  --master 192.168.77.130,192.168.77.131,192.168.77.132 \\\n  --worker 192.168.77.133,192.168.77.134,192.168.77.135 \\\n  --user root \\\n  --password 123456 \\\n  --version 1.20.6\n\n  [reset cluster]\n  kainstall-centos.sh reset \\\n  --user root \\\n  --password 123456\n\n  [add node]\n  kainstall-centos.sh add \\\n  --master 192.168.77.140,192.168.77.141 \\\n  --worker 192.168.77.143,192.168.77.144 \\\n  --user root \\\n  --password 123456 \\\n  --version 1.20.6\n\n  [del node]\n  kainstall-centos.sh del \\\n  --master 192.168.77.140,192.168.77.141 \\\n  --worker 192.168.77.143,192.168.77.144 \\\n  --user root \\\n  --password 123456\n \n  [other]\n  kainstall-centos.sh renew-cert --user root --password 123456\n  kainstall-centos.sh upgrade --version 1.20.6 --user root --password 123456\n  kainstall-centos.sh update\n  kainstall-centos.sh add --ingress traefik\n  kainstall-centos.sh add --monitor prometheus\n  kainstall-centos.sh add --log elasticsearch\n  kainstall-centos.sh add --storage rook\n  kainstall-centos.sh add --ui dashboard\n  kainstall-centos.sh add --addon nodelocaldns\n```\n\n### 初始化集群\n\n```bash\n# 使用脚本参数\nbash kainstall-centos.sh init \\\n  --master 192.168.77.130,192.168.77.131,192.168.77.132 \\\n  --worker 192.168.77.133,192.168.77.134 \\\n  --user root \\\n  --password 123456 \\\n  --port 22 \\\n  --version 1.20.6\n\n# 使用环境变量\nexport MASTER_NODES=\"192.168.77.130,192.168.77.131,192.168.77.132\"\nexport WORKER_NODES=\"192.168.77.133,192.168.77.134\"\nexport SSH_USER=\"root\"\nexport SSH_PASSWORD=\"123456\"\nexport SSH_PORT=\"22\"\nexport KUBE_VERSION=\"1.20.6\"\nbash kainstall-centos.sh init\n```\n\n\u003e 默认情况下，除了初始化集群外，还会安装 `ingress: nginx` , `ui: dashboard` 两个组件。\n\n还可以使用一键安装方式, 连下载都省略了。\n\n```bash\nbash -c \"$(curl -sSL https://ghproxy.com/https://raw.githubusercontent.com/lework/kainstall/master/kainstall-centos.sh)\"  \\\n  - init \\\n  --master 192.168.77.130,192.168.77.131,192.168.77.132 \\\n  --worker 192.168.77.133,192.168.77.134 \\\n  --user root \\\n  --password 123456 \\\n  --port 22 \\\n  --version 1.20.6\n```\n\n### 增加节点\n\n\u003e 操作需在 k8s master 节点上操作，ssh连接信息非默认时请指定\n\n```bash\n# 增加单个master节点\nbash kainstall-centos.sh add --master 192.168.77.135\n\n# 增加单个worker节点\nbash kainstall-centos.sh add --worker 192.168.77.134\n\n# 同时增加\nbash kainstall-centos.sh add --master 192.168.77.135,192.168.77.136 --worker 192.168.77.137,192.168.77.138\n```\n\n### 删除节点\n\n\u003e 操作需在 k8s master 节点上操作，ssh连接信息非默认时请指定\n\n```bash\n# 删除单个master节点\nbash kainstall-centos.sh del --master 192.168.77.135\n\n# 删除单个worker节点\nbash kainstall-centos.sh del --worker 192.168.77.134\n\n# 同时删除\nbash kainstall-centos.sh del --master 192.168.77.135,192.168.77.136 --worker 192.168.77.137,192.168.77.138\n```\n\n### 重置集群\n\n```bash\nbash kainstall-centos.sh reset \\\n  --user root \\\n  --password 123456 \\\n  --port 22 \\\n```\n\n### 其他操作\n\n\u003e 操作需在 k8s master 节点上操作，ssh连接信息非默认时请指定\n\u003e **注意：** 添加组件时请保持节点的内存和cpu至少为`2C4G`的空闲。否则会导致节点下线且服务器卡死。\n\n```bash\n# 添加 nginx ingress\nbash kainstall-centos.sh add --ingress nginx\n\n# 添加 prometheus\nbash kainstall-centos.sh add --monitor prometheus\n\n# 添加 elasticsearch\nbash kainstall-centos.sh add --log elasticsearch\n\n# 添加 rook\nbash kainstall-centos.sh add --storage rook\n\n# 添加 nodelocaldns\nbash kainstall-centos.sh add --addon nodelocaldns\n\n# 升级版本\nbash kainstall-centos.sh upgrade --version 1.20.6\n\n# 重新颁发证书\nbash kainstall-centos.sh renew-cert\n\n# debug模式\nDEBUG=1 bash kainstall-centos.sh\n\n# 更新脚本\nbash kainstall-centos.sh update\n\n# 使用 cri-o containerd runtime\nbash kainstall-centos.sh init \\\n  --master 192.168.77.130,192.168.77.131,192.168.77.132 \\\n  --worker 192.168.77.133,192.168.77.134,192.168.77.135 \\\n  --user root \\\n  --password 123456 \\\n  --cri containerd\n  \n# 使用 cri-o cri runtime\nbash kainstall-centos.sh init \\\n  --master 192.168.77.130,192.168.77.131,192.168.77.132 \\\n  --worker 192.168.77.133,192.168.77.134,192.168.77.135 \\\n  --user root \\\n  --password 123456 \\\n  --cri cri-o\n```\n\n### 默认设置\n\n\u003e **注意:** 以下变量都在脚本文件的`environment configuration`部分。可根据需要自行修改，或者为变量设置同名的**环境变量**修改其默认内容。\n\n```bash\n# 版本\nKUBE_VERSION=\"${KUBE_VERSION:-latest}\"\nFLANNEL_VERSION=\"${FLANNEL_VERSION:-0.24.0}\"\nMETRICS_SERVER_VERSION=\"${METRICS_SERVER_VERSION:-0.6.4}\"\nINGRESS_NGINX=\"${INGRESS_NGINX:-1.9.5}\"\nTRAEFIK_VERSION=\"${TRAEFIK_VERSION:-2.10.7}\"\nCALICO_VERSION=\"${CALICO_VERSION:-3.27.0}\"\nCILIUM_VERSION=\"${CILIUM_VERSION:-1.14.5}\"\nKUBE_PROMETHEUS_VERSION=\"${KUBE_PROMETHEUS_VERSION:-0.13.0}\"\nELASTICSEARCH_VERSION=\"${ELASTICSEARCH_VERSION:-8.11.3}\"\nROOK_VERSION=\"${ROOK_VERSION:-1.9.13}\"\nLONGHORN_VERSION=\"${LONGHORN_VERSION:-1.5.3}\"\nKUBERNETES_DASHBOARD_VERSION=\"${KUBERNETES_DASHBOARD_VERSION:-2.7.0}\"\nKUBESPHERE_VERSION=\"${KUBESPHERE_VERSION:-3.3.2}\"\n\n# 集群配置\nKUBE_DNSDOMAIN=\"${KUBE_DNSDOMAIN:-cluster.local}\"\nKUBE_APISERVER=\"${KUBE_APISERVER:-apiserver.$KUBE_DNSDOMAIN}\"\nKUBE_POD_SUBNET=\"${KUBE_POD_SUBNET:-10.244.0.0/16}\"\nKUBE_SERVICE_SUBNET=\"${KUBE_SERVICE_SUBNET:-10.96.0.0/16}\"\nKUBE_IMAGE_REPO=\"${KUBE_IMAGE_REPO:-registry.cn-hangzhou.aliyuncs.com/kainstall}\"\nKUBE_NETWORK=\"${KUBE_NETWORK:-flannel}\"\nKUBE_INGRESS=\"${KUBE_INGRESS:-nginx}\"\nKUBE_MONITOR=\"${KUBE_MONITOR:-prometheus}\"\nKUBE_STORAGE=\"${KUBE_STORAGE:-rook}\"\nKUBE_LOG=\"${KUBE_LOG:-elasticsearch}\"\nKUBE_UI=\"${KUBE_UI:-dashboard}\"\nKUBE_ADDON=\"${KUBE_ADDON:-metrics-server}\"\nKUBE_FLANNEL_TYPE=\"${KUBE_FLANNEL_TYPE:-vxlan}\"\nKUBE_CRI=\"${KUBE_CRI:-containerd}\"\nKUBE_CRI_VERSION=\"${KUBE_CRI_VERSION:-latest}\"\nKUBE_CRI_ENDPOINT=\"${KUBE_CRI_ENDPOINT:-unix:///run/containerd/containerd.sock}\"\n\n# 定义的master和worker节点地址，以逗号分隔\nMASTER_NODES=\"${MASTER_NODES:-}\"\nWORKER_NODES=\"${WORKER_NODES:-}\"\n\n# 定义在哪个节点上进行设置\nMGMT_NODE=\"${MGMT_NODE:-127.0.0.1}\"\n\n# 节点的连接信息\nSSH_USER=\"${SSH_USER:-root}\"\nSSH_PASSWORD=\"${SSH_PASSWORD:-}\"\nSSH_PRIVATE_KEY=\"${SSH_PRIVATE_KEY:-}\"\nSSH_PORT=\"${SSH_PORT:-22}\"\nSUDO_USER=\"${SUDO_USER:-root}\"\n\n# 节点设置\nHOSTNAME_PREFIX=\"${HOSTNAME_PREFIX:-k8s}\"\n\n# 脚本设置\nTMP_DIR=\"$(rm -rf /tmp/kainstall* \u0026\u0026 mktemp -d -t kainstall.XXXXXXXXXX)\"\nLOG_FILE=\"${TMP_DIR}/kainstall.log\"\nSSH_OPTIONS=\"-o ConnectTimeout=600 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null\"\nERROR_INFO=\"\\n\\033[31mERROR Summary: \\033[0m\\n  \"\nACCESS_INFO=\"\\n\\033[32mACCESS Summary: \\033[0m\\n  \"\nCOMMAND_OUTPUT=\"\"\nSCRIPT_PARAMETER=\"$*\"\nOFFLINE_DIR=\"/tmp/kainstall-offline-file/\"\nOFFLINE_FILE=\"\"\nOS_SUPPORT=\"centos7 centos8\"\nGITHUB_PROXY=\"${GITHUB_PROXY:-https://mirror.ghproxy.com/}\"\nGCR_PROXY=\"${GCR_PROXY:-k8sgcr.lework.workers.dev}\"\nSKIP_UPGRADE_PLAN=${SKIP_UPGRADE_PLAN:-false}\nSKIP_SET_OS_REPO=${SKIP_SET_OS_REPO:-false}\n```\n\n### 离线部署\n\n\u003e **注意**, 脚本执行的宿主机上，需要安装 `tar` 命令，用于解压离线包。\n\u003e 详细部署请见: [https://lework.github.io/2020/10/18/kainstall-offline/](https://lework.github.io/2020/10/18/kainstall-offline/)\n\n1. 下载指定版本的离线包\n\n    ```bash\n    wget https://github.com/lework/kainstall-offline/releases/download/1.20.6/1.20.6_centos7.tgz\n    ```\n\n    \u003e 更多离线包信息，见 [kainstall-offline](https://github.com/lework/kainstall-offline) 仓库\n\n2. 初始化集群\n\n    \u003e 指定 `--offline-file` 参数。\n\n    ```bash\n    bash kainstall-centos.sh init \\\n      --master 192.168.77.130,192.168.77.131,192.168.77.132 \\\n      --worker 192.168.77.133,192.168.77.134 \\\n      --user root \\\n      --password 123456 \\\n      --version 1.20.6 \\\n      --upgrade-kernel \\\n      --10years \\\n      --offline-file 1.20.6_centos7.tgz\n    ```\n\n3. 添加节点\n\n    \u003e 指定 --offline-file 参数。\n\n    ```bash\n    bash kainstall-centos.sh add \\\n      --master 192.168.77.135 \\\n      --worker 192.168.77.136 \\\n      --user root \\\n      --password 123456 \\\n      --version 1.20.6 \\\n      --offline-file 1.20.6_centos7.tgz\n    ```\n\n### sudo 特权\n\n创建 sudo 用户\n\n```bash\nuseradd test\npasswd test --stdin \u003c\u003c\u003c \"12345678\"\necho 'test    ALL=(ALL)   NOPASSWD:ALL' \u003e\u003e /etc/sudoers\n```\n\nsudo 参数\n\n- `--sudo` 开启 sudo 特权\n- `--sudo-user` 指定 sudo 用户, 默认是 `root`\n- `--sudo-password` 指定 sudo 密码\n\n示例\n\n```bash\n# 初始化\nbash kainstall-centos.sh init \\\n  --master 192.168.77.130,192.168.77.131,192.168.77.132 \\\n  --worker 192.168.77.133,192.168.77.134 \\\n  --user test \\\n  --password 12345678 \\\n  --port 22 \\\n  --version 1.20.6 \\\n  --sudo \\\n  --sudo-user root \\\n  --sudo-password 12345678\n\n# 添加\nbash kainstall-centos.sh add \\\n  --master 192.168.77.135 \\\n  --worker 192.168.77.136 \\\n  --user test \\\n  --password 12345678 \\\n  --port 22 \\\n  --version 1.20.6 \\\n  --sudo \\\n  --sudo-user root \\\n  --sudo-password 12345678\n\n# 更新脚本文件\nbash kainstall-centos.sh update\n```\n\n### 10年证书期限\n\n**注意:** 此操作需要联网下载。\n\n使用 [kubeadm-certs](https://github.com/lework/kubeadm-certs) 项目编译的 `kubeadm` 客户端， 其修改了 `kubeadm` 源码，将 1 年期限修改成 10 年期限，具体信息见仓库介绍。\n\n在初始化或添加时，加上 `--10years` 参数，就可以使用`kubeadm` 10 years 的客户端\n\n示例\n\n```bash\n# 初始化\nbash kainstall-centos.sh init \\\n  --master 192.168.77.130,192.168.77.131,192.168.77.132 \\\n  --worker 192.168.77.133,192.168.77.134 \\\n  --user root \\\n  --password 123456 \\\n  --port 22 \\\n  --version 1.20.6 \\\n  --10years\n  \n# 添加\nbash kainstall-centos.sh add \\\n  --master 192.168.77.135 \\\n  --worker 192.168.77.136 \\\n  --user root \\\n  --password 123456 \\\n  --port 22 \\\n  --version 1.20.6 \\\n  --10years\n```\n\n## 联系方式\n\n- [QQ群](https://qm.qq.com/cgi-bin/qm/qr?k=HwpkLUcmroLKNv37TlrHY-D3SXuLKMOd\u0026jump_from=webapi)\n- [论坛](https://leops.cn/topics/node51)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flework%2Fkainstall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flework%2Fkainstall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flework%2Fkainstall/lists"}