CentOS7使用KubeSpray搭建多节点K8S集群

kubespray主机搭建

  • 依据《CentOS7使用KubeSpray搭建单节点K8S集群》的环境部署和集群配置修改部分搭建kubespray主机 192.168.77.10
HOSTNAME=kubespray
hostnamectl set-hostname "$HOSTNAME"
echo "$HOSTNAME">/etc/hostname
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ip a|grep "inet "|grep -v 127|awk -F'[ /]' '{print $6}') $HOSTNAME">>/etc/hosts

集群节点列表

  • 依据《CentOS7实验机模板搭建部署》克隆多台实验机,作为k8s集群的安装主机,数目随意,这里部署7节点的k8s集群环境
kubespray 192.168.77.10  2CPU,4G内存
master01  192.168.77.101 2CPU,4G内存
master01  192.168.77.102 2CPU,4G内存
master01  192.168.77.103 2CPU,4G内存
worker01  192.168.77.111 2CPU,8G内存
worker02  192.168.77.112 2CPU,8G内存
worker03  192.168.77.113 2CPU,8G内存
worker04  192.168.77.114 2CPU,8G内存

对kubespray主机之外的实验机进行预部署

# 主机名和hosts解析
HOSTNAME=master01
# HOSTNAME=master02
# HOSTNAME=master03
# HOSTNAME=worker01
# HOSTNAME=worker02
# HOSTNAME=worker03
# HOSTNAME=worker04
hostnamectl set-hostname "$HOSTNAME"
echo "$HOSTNAME">/etc/hostname
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ip a|grep "inet "|grep -v 127|awk -F'[ /]' '{print $6}') $HOSTNAME">>/etc/hosts

# 依据《CentOS7使用KubeSpray搭建单节点K8S集群》的主机预部署对各个节点进行部署

# 依据《CentOS7部署安装Docker和Docker Compose工具简录》部署安装docker-18.09.7,并做优化加速
yum -y install docker-ce-18.09.7

# 依据《CentOS7使用KubeSpray搭建单节点K8S集群》的镜像梳理手动预先下载镜像
# 在一个节点上下载,另外节点装载即可
cd /tmp
cat >/tmp/image-list.txt<<EOF
nginx:1.17
coredns/coredns:1.6.0
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/quay.io-coreos-etcd:v3.3.10
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/pause-amd64:3.1
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/pause:3.1
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-scheduler:v1.16.7
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kubernetes-dashboard-amd64:v2.0.0-rc5
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-proxy:v1.16.7
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-controller-manager:v1.16.7
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-apiserver:v1.16.7
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/k8s-dns-node-cache:1.15.8
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/docker.io-calico-node:v3.7.3
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/docker.io-calico-kube-controllers:v3.7.3
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/docker.io-calico-cni:v3.7.3
registry.cn-hangzhou.aliyuncs.com/vinc-k8s/cluster-proportional-autoscaler-amd64:1.6.0
EOF
mkdir image
for i in $(cat /tmp/image-list.txt)
do
  Name=$(basename $(echo $i|awk -F':' '{print $1}'))
  docker pull $i
  docker save $i -o /tmp/image/${Name}.tar
done
tar -czf image.tar.gz image

for i in 102 103 111 112 113 114
do
  scp -r /tmp/image.tar.gz 192.168.77.${i}:/tmp/
  ssh -o StrictHostKeyChecking=no 192.168.77.${i} \
    'cd /tmp/&& tar -xf image.tar.gz && cd /tmp/image && for i in $(ls);do docker load<$i;done'
done
for i in 101 102 103 111 112 113 114
do
  ssh 192.168.77.${i} 'rm -rf /tmp/image*'
done

操纵kubespray主机进行集群安装

# 追加配置到hosts文件
cat >>/etc/hosts<<EOF
192.168.77.101    master01
192.168.77.102    master02
192.168.77.103    master03
192.168.77.111    worker01
192.168.77.112    worker02
192.168.77.113    worker03
192.168.77.114    worker04
EOF

# 配置ssh免密登录
ssh-keygen
ssh-copy-id -o StrictHostKeyChecking=no 127.0.0.1
ssh -o StrictHostKeyChecking=no $(hostname) hostname
for i in $(cat /etc/hosts|grep -E 'master|worker'|awk '{print $2}')
do
  ssh-copy-id -o StrictHostKeyChecking=no $i
  ssh -o StrictHostKeyChecking=no $i hostname
done

# 集群安装
cd /opt/kubespray-2.12.3
/bin/cp -rfp inventory/sample inventory/mycluster
declare -a IPS=($(cat /etc/hosts|grep -E 'master|worker'|awk '{printf $1" "}'))
rm -rf inventory/mycluster/hosts.yaml
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
sed -i "s/node1/master01/g" inventory/mycluster/hosts.yaml
sed -i "s/node2/master02/g" inventory/mycluster/hosts.yaml
sed -i "s/node3/master03/g" inventory/mycluster/hosts.yaml
sed -i "s/node4/worker01/g" inventory/mycluster/hosts.yaml
sed -i "s/node5/worker02/g" inventory/mycluster/hosts.yaml
sed -i "s/node6/worker03/g" inventory/mycluster/hosts.yaml
sed -i "s/node7/worker04/g" inventory/mycluster/hosts.yaml
# 手动修改hosts.yaml文件,在kube-master中加入master03,将kube-node中master节点剔除

# 最后执行集群安装
cd /opt/kubespray-2.12.3
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml

# 在任意一个master节点上验证
ssh master01
kubectl get node --all-namespaces -o wide
kubectl get pods --all-namespaces -o wide
kubectl cluster-info
kubectl -n kube-system describe $(kubectl -n kube-system get secret -n kube-system -o name | grep namespace) | grep ^token
exit
# 依据《CentOS7使用KubeSpray搭建单节点K8S集群》的创建具有操作权限的Dashboard账号部分配置账号创建脚本

TOC

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值