k8s高可用集群的搭建,我这里使用sealos来一键安装。
sealos的项目地址
项目中有具体的介绍,有兴趣的也可以去阅读一下源码,这里就直接安装了。

安装前准备:
1、安装并启动docker
2、下载kubernetes 离线安装包
3、下载最新版本sealos

wget https://github.com/fanux/sealos/releases/download/v2.0.7/sealos && \
    chmod +x sealos && mv sealos /usr/bin

一、安装
我这里搭建的是3主2从。

sealos init --master 192.168.3.130 \
    --master 192.168.3.131 \
    --master 192.168.3.132 \
    --node 192.168.3.120 \
    --node 192.168.3.121 \
    --user root \
    --passwd 123456 \
    --version v1.14.1 \
    --pkg-url /root/kube1.14.1.tar.gz

参数详解

--master   master服务器地址列表
--node     node服务器地址列表
--user     服务器ssh用户名
--passwd   服务器ssh用户密码
--pkg-url  离线包位置,可以放在本地目录,也可以放在一个http服务器上,sealos会wget到安装目标机
--version  kubernetes版本
--pk       ssh私钥地址,配置免密钥默认就是/root/.ssh/id_rsa
--kubeadm-config string   kubeadm-config.yaml kubeadm配置文件,可自定义kubeadm配置文件
 --vip string              virtual ip (default "10.103.97.2") 本地负载时虚拟ip,不推荐修改,集群外不可访问

到这里我们的集群搭建完毕 ,没错,就是只要一条命令。

二、添加节点
在master上获取join的命令

kubeadm token create --print-join-command

然后在node上执行

cd kube/shell && init.sh
echo "10.103.97.2 apiserver.cluster.local" >> /etc/hosts
kubeadm join 10.103.97.2:6443 --token r74wor.a8gygk3ka49bx4hx \
    --master 192.168.3.130:6443 \
    --master 192.168.3.131:6443 \
    --master 192.168.3.132:6443 \
    --discovery-token-ca-cert-hash sha256:c21e5a34a79aa77b02187813bdac8553f660d5063f039f64e7608a00f7b16c99

也可以使用sealos来一键添加

sealos join 
    --master 192.168.3.130 \
    --master 192.168.3.131 \
    --master 192.168.3.132 \
    --vip 10.103.97.2 \       
    --node 192.168.3.122 \            
    --user root \             
    --passwd your-server-password \
    --pkg-url /root/kube1.14.1.tar.gz

三、删除节点或集群

sealos clean \
    --master 192.168.3.130 \
    --master 192.168.3.131 \
    --master 192.168.3.132 \
    --node 192.168.3.52 \
    --user root \
    --passwd 123456

–master 添加要删除的主节点
–node 添加要删除的从节点

四、配置从阿里云私有仓库拉取镜像
首先配置/etc/docker/daemon.json

{
        "insecure-registries" : ["registry.cn-hangzhou.aliyuncs.com"]
}

创建secret来保存阿里镜像仓库的账号和密码。不同的namespace需要分别创建secret。

kubectl create secret docker-registry registrykey-k8s --docker-server=registry.cn-hangzhou.aliyuncs.com --docker-username=root --docker-password=123456  -n default

最后配置yaml文件

    spec:
      serviceAccountName: default
      imagePullSecrets:
        - name: registrykey-k8s
      containers:
      - name: eureka
        image: registry.cn-hangzhou.aliyuncs.com/billion_k8s/eureka:latest
        imagePullPolicy: IfNotPresent

五、问题
问题1、在节点上执行kubectl get 命令报错

[root@cm-server ~]# kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?

解决:出现这个问题的原因是kubectl命令需要使用kubernetes-admin来运行,将主节点中的/etc/kubernetes/admin.conf文件拷贝到从节点相同目录下,然后配置环境变量

echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐