k8s高可用集群搭建及问题处理
k8s高可用集群的搭建,我这里使用sealos来一键安装。sealos的项目地址项目中有具体的介绍,有兴趣的也可以去阅读一下源码,这里就直接安装了。安装前准备:1、安装并启动docker2、下载kubernetes 离线安装包3、下载最新版本sealoswget https://github.com/fanux/sealos/releases/download/v2.0.7/seal...
·
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
更多推荐
已为社区贡献2条内容
所有评论(0)