一条命令离线安装高可用kubernetes
官方地址:https://www.sealyun.com/
Github地址:https://github.com/fanux/sealos
要求和建议
- 最低资源要求
- 2 vCpu
- 4G Ram
- 40G+ 存储
- 操作系统要求
- ssh 可以访问各安装节点
- 各节点主机名不相同,并满足kubernetes的主机名要求。
- 各节点时间同步
- 网卡名称如果是不常见的,建议修改成规范的网卡名称, 如(eth.|en.|em.*)
- kubernetes1.20+ 使用containerd作为cri. 不需要用户安装docker/containerd. sealos会安装1.3.9版本containerd。
- kubernetes1.19及以下 使用docker作为cri。 也不需要用户安装docker。 sealos会安装1.19.03版本docker
- 网络和 DNS 要求:
- 确保 /etc/resolv.conf 中的 DNS 地址可用。否则,可能会导致群集中coredns异常。
- 如果使用阿里云/华为云主机部署。 默认的pod网段会和阿里云的dns网段冲突, 建议自定义修改pod网段, 在init的时候指定—podcidr 来修改。
- sealos 默认会关闭防火墙, 如果需要打开防火墙, 建议手动放行相关的端口。
- 内核要求:
- cni组件选择cilium时要求内核版本不低于5.4
下载并安装sealos
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos
设置执行权限
chmod +x sealos && mv sealos /usr/bin
资源包
资源包下载地址:https://www.sealyun.com/goodsDetail?type=cloud_kernel&name=kubernetes
下载资源包(资源是收费的)
$ wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/2fb10b1396f8c6674355fcc14a8cda7c-v1.20.0/kube1.20.0.tar.gz
注意1.20+版本不在使用使用docker作为cri
安装命令
# 安装一个1master和node的kubernetes集群$ sealos init --passwd 'baxiang' --master 192.168.145.130 --node 192.168.145.131 --pkg-url /root/kube1.19.12.tar.gz --version v1.19.12
init 命令的主要含义
# sealos init --helpsealos init --master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 \--node 192.168.0.5 --user root --passwd your-server-password \--version v1.18.0 --pkg-url=/root/kube1.18.0.tar.gzUsage:sealos init [flags]sealos init [command]Examples:# init with password with three master one nodesealos init --passwd your-server-password \--master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 \--node 192.168.0.5 --user root \--version v1.18.0 --pkg-url=/root/kube1.18.0.tar.gz# init with pk-file , when your server have different passwordsealos init --pk /root/.ssh/id_rsa \--master 192.168.0.2 --node 192.168.0.5 --user root \--version v1.18.0 --pkg-url=/root/kube1.18.0.tar.gz# when use multi network. set a can-reach with --interfacesealos init --interface 192.168.0.254 \--master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 \--node 192.168.0.5 --user root --passwd your-server-password \--version v1.18.0 --pkg-url=/root/kube1.18.0.tar.gz# when your interface is not "eth*|en*|em*" like.sealos init --interface your-interface-name \--master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 \--node 192.168.0.5 --user root --passwd your-server-password \--version v1.18.0 --pkg-url=/root/kube1.18.0.tar.gzAvailable Commands:gen show default sealos init configFlags:--apiserver string apiserver domain name (default "apiserver.cluster.local")--cert-sans strings kubernetes apiServerCertSANs ex. 47.0.0.22 sealyun.com-h, --help help for init--interface string name of network interface, when use calico IP_AUTODETECTION_METHOD, set your ipv4 with can-reach=192.168.0.1 (default "eth.*|en.*|em.*")--ipip ipip mode enable, calico.. (default true)--kubeadm-config string kubeadm-config.yaml template file--lvscare-image string lvscare image name (default "fanux/lvscare")--lvscare-tag string lvscare image tag name (default "latest")--master strings kubernetes multi-masters ex. 192.168.0.2-192.168.0.4--mtu string mtu of the ipip mode , calico.. (default "1440")--network string cni plugin, calico.. (default "calico")--node strings kubernetes multi-nodes ex. 192.168.0.5-192.168.0.5--passwd string password for ssh--pk string private key for ssh (default "/root/.ssh/id_rsa")--pk-passwd string private key password for ssh--pkg-url string http://store.lameleg.com/kube1.14.1.tar.gz download offline package url, or file location ex. /root/kube1.14.1.tar.gz--podcidr string Specify range of IP addresses for the pod network (default "100.64.0.0/10")--repo string choose a container registry to pull control plane images from (default "k8s.gcr.io")--svccidr string Use alternative range of IP address for service VIPs (default "10.96.0.0/12")--user string servers user name for ssh (default "root")--version string version is kubernetes version--vip string virtual ip (default "10.103.97.2")--vlog int kubeadm log level--without-cni If true we not install cni pluginGlobal Flags:--config string config file (default is $HOME/.sealos/config.yaml)--info logger ture for Info, false for DebugUse "sealos init [command] --help" for more information about a command.
参数含义
| 参数名 | 含义 | 示例 |
|---|---|---|
| passwd | 服务器密码 | 123456 |
| master | k8s master节点IP地址 | 192.168.0.2 |
| node | k8s node节点IP地址 | 192.168.0.3 |
| pkg-url | 离线资源包地址,支持下载到本地,或者一个远程地址 | /root/kube1.20.0.tar.gz |
| version | 资源包对应的版本 | v1.20.0 |
单机安装
参考https://github.com/fanux/sealos/issues/419
单机安装的话可以设置
sealos init --passwd '123456' \--master 10.140.122.12 \--pkg-url /root/kube1.19.12.tar.gz \--version v1.19.12
去掉主节点的污点
# kubectl get nodesNAME STATUS ROLES AGE VERSIONi-ag52ooeg Ready master 91s v1.19.12# kubectl taint nodes --all node-role.kubernetes.io/master-node/i-ag52ooeg untainted
验证安装
[root@i-ag52ooeg ~]# kubectl create deployment nginx --image=nginxdeployment.apps/nginx created[root@i-ag52ooeg ~]# kubectl expose deployment nginx --port=80 --type=NodePortservice/nginx exposed[root@i-ag52ooeg ~]# kubectl get pods,svcNAME READY STATUS RESTARTS AGEpod/nginx-6799fc88d8-pqkhz 0/1 ContainerCreating 0 23sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7m41sservice/nginx NodePort 10.110.167.245 <none> 80:30538/TCP 14s
访问ip:30538
