一条命令离线安装高可用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 --help
sealos 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.gz
Usage:
sealos init [flags]
sealos init [command]
Examples:
# init with password with three master one node
sealos 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 password
sealos 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 --interface
sealos 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.gz
Available Commands:
gen show default sealos init config
Flags:
--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 plugin
Global Flags:
--config string config file (default is $HOME/.sealos/config.yaml)
--info logger ture for Info, false for Debug
Use "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 nodes
NAME STATUS ROLES AGE VERSION
i-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=nginx
deployment.apps/nginx created
[root@i-ag52ooeg ~]# kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
[root@i-ag52ooeg ~]# kubectl get pods,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-6799fc88d8-pqkhz 0/1 ContainerCreating 0 23s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7m41s
service/nginx NodePort 10.110.167.245 <none> 80:30538/TCP 14s
访问ip:30538