centos7脚本部署kubernetes

一、思路:

1、centos7.9默认内核3.10,部署k8s有bug,先将内核升级到4.4或更高版本再部署k8s。

2、master节点和node节点都需要安装配置docker、kubelet等工具,放在一个脚本。

3、只需master节点安装配置的部分,放在单独的脚本中。

4、master节点配置完成后,node节点加入集群。

5、检查k8s集群状态。

二、实践:

1、如果centos7.9内核低于4.4,需要升级至4.4或更高版本

#!/bin/bash

# CentOS 7.x 系统自带的3.10.x内核存在一些Bugs.导致运行的Docker.Kubernetes不稳定
# 更新yum源仓库
#yum -y update

# 启用 ELRepo 仓库
# 导入ELRepo仓库的公共密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

#安装ELRepo仓库的yum源
rpm -Uvh https://mirrors.aliyun.com/elrepo/kernel/el7/x86_64/RPMS/elrepo-release-7.0-4.el7.elrepo.noarch.rpm

cp /etc/yum.repos.d/elrepo.repo /etc/yum.repos.d/elrepo.repo.bak
sed -i -e 's/^mirrorlist=/#&/' \
       -e 's#http://www.elrepo.org/linux#https://mirrors.aliyun.com/elrepo#' \
       -e 's#http://mirrors.coreix.net/elrepo#https://mirrors.tuna.tsinghua.edu.cn/#' \
       /etc/yum.repos.d/elrepo.repo

yum makecache

#安装最新版本内核
yum --enablerepo=elrepo-kernel install kernel-ml -y

#设置新的内核为grub2的默认版本
grub2-set-default 0

#生成 grub 配置文件并重启
#内核安装好后,需要设置为默认启动选项并重启后才会生效
grub2-mkconfig -o /boot/grub2/grub.cfg

#重启服务器
reboot

2、master节点和node节点都要安装配置

#cat deploy_k8s_common.sh

#!/bin/bash

# 调用方式 #bash deploy_k8s_common.sh (master|node1|node2)
if [ $# -ne 1 ]; then
  echo "$0 "
  exit
fi

hostnamectl set-hostname $1

cat >> /etc/hosts< kubernetes.conf< /etc/sysctl.d/kubernetes.conf</etc/systemd/journal.conf.d/99-prophet.conf </etc/sysconfig/modules/ipvs.modules </etc/docker/daemon.json < /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF


#安装k8s组件,kubeadm,kubelet和kubectl
#yum makecache fast
yum install -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0
systemctl enable kubelet

#初始化准备
cat > k8s_image.sh <

3、只在master节点上安装配置,需要预先把kube-flannel.yml文件放在脚本同级目录下。node节点加入集群后,会从master节点下载相关插件

#!/bin/bash

#显示默认的init初始化文件并打印出来存放到指定位置
kubeadm config print init-defaults >kubeadm-config.yaml

#添加pod网段(kubernetesVersion上一行添加即可)
sed -i -e '/advertiseAddress:/c\  advertiseAddress: 10.0.0.17' \
       -e '/kubernetesVersion:/c\  podSubnet: "10.244.0.0/16"\n  kubernetesVersion: v1.15.1' kubeadm-config.yaml

#另外再添加一个字段,把默认的调度方式改为ipvs模式(最后scheduler: {}下面)
cat >>kubeadm-config.yaml<

4、在node节点上执行类似以下的命令。该命令是上个步骤中,master节点执行初始化安装并自动颁发证书(kubeadm init)时的执行结果,复制到node节点执行即可。

kubeadm join 10.0.0.17:6443 --token apc1pa.sojpqedyvn881dci --discovery-token-ca-cert-hash sha256:3608a3713ae56ee508c779550b5e1782d77f892b4d7ded9b69d5b8c728090683

5、在master节点上用kubectl get nodes -o wide、kubectl get pods -n kube-system -o wide、kubectl get cs等命令,刷新查看k8s节点和pod状态。正常情况下,各个节点应为ready状态、pod为running状态、cs(componentstatuses)为healthy状态。

你可能感兴趣的:(运维,linux,docker,kubernetes)