shell 一键搭建 k8s 集群

部署环境:三台 CentOS7.9,一台 master、两台 node

docker version:20.10.14

k8s version:1.23.6

# master 节点:

[root@k8s-master ~]# cat deploy_k8s_master.sh

#!/bin/bash

# 1. configure resolve of IP and hostname

echo '192.168.121.50 k8s-master' >>/etc/hosts

echo '192.168.121.51 k8s-node1' >>/etc/hosts

echo '192.168.121.52 k8s-node2' >>/etc/hosts

# 2. close firewall

systemctl disable firewalld.service --now

# 3. close selinux

sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

setenforce 0

# 4. configure chrony

yum -y install chrony

systemctl enable chronyd --now

sed -i -e 's/^server/#&/g' -e '2a server k8s-master iburst' /etc/chrony.conf

echo "allow all" >> /etc/chrony.conf

echo "local stratum 10" >> /etc/chrony.conf

timedatectl set-ntp true

sleep 5

systemctl restart chronyd

# 5. permanent close swap partition

sed -i 's/^[^#].*swap.*/#&/g' /etc/fstab

swapoff -a

# 6. modify kernel parameter

modprobe br_netfilter

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf

echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf

sysctl -p

# 7. install docker-ce

yum -y install yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7.9/x86_64/stable/

mv /etc/yum.repos.d/mirrors.tuna.tsinghua.edu.cn_docker-ce_linux_centos_7.9_x86_64_stable_.repo /etc/yum.repos.d/docker-ce.repo

echo 'gpgcheck=0' >>/etc/yum.repos.d/docker-ce.repo

yum -y install docker-ce docker-ce-cli containerd.io

systemctl enable docker --now

# 8. configure docker image accelerator

tee /etc/docker/daemon.json <<-'EOF'

{

"insecure-registries" : ["0.0.0.0/0"],

"registry-mirrors": ["https://7o6gyryt.mirror.aliyuncs.com"],

"exec-opts": ["native.cgroupdriver=systemd"]

}

EOF

systemctl daemon-reload

systemctl restart docker

# 9. configure k8s source and install k8s

cat >/etc/yum.repos.d/kubernetes.repo <<EOF

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.tuna.tsinghua.edu.cn/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=0

EOF

yum install -y kubelet kubeadm kubectl

systemctl enable kubelet --now

# 10. k8s-master initialization

version=$(kubelet --version |cut -d'v' -f2)

docker --version

kubelet --version

kubeadm init --kubernetes-version=${version} --apiserver-advertise-address=192.168.121.50 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

--------------------------------------------------------------------------------------------------------------------------------------

# node 节点:

[root@k8s-node1 ~]# cat deploy_k8s_node.sh

#!/bin/bash

# 1. configure resolve of IP and hostname

echo '192.168.121.50 k8s-master' >>/etc/hosts

echo '192.168.121.51 k8s-node1' >>/etc/hosts

echo '192.168.121.52 k8s-node2' >>/etc/hosts

# 2. close firewall

systemctl disable firewalld.service --now

# 3. close selinux

sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

setenforce 0

# 4. configure chrony

yum -y install chrony

systemctl enable chronyd --now

sed -i -e 's/^server/#&/g' -e '2a server k8s-master iburst' /etc/chrony.conf

timedatectl set-ntp true

sleep 5

systemctl restart chronyd

chronyc sources

# 5. permanent close swap partition

sed -i 's/^[^#].*swap.*/#&/g' /etc/fstab

swapoff -a

# 6. modify kernel parameter

modprobe br_netfilter

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf

echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf

sysctl -p

# 7. install docker-ce

yum -y install yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7.9/x86_64/stable/

mv /etc/yum.repos.d/mirrors.tuna.tsinghua.edu.cn_docker-ce_linux_centos_7.9_x86_64_stable_.repo /etc/yum.repos.d/docker-ce.repo

echo 'gpgcheck=0' >>/etc/yum.repos.d/docker-ce.repo

yum -y install docker-ce docker-ce-cli containerd.io

systemctl enable docker --now

# 8. configure docker image accelerator

tee /etc/docker/daemon.json <<-'EOF'

{

"insecure-registries" : ["0.0.0.0/0"],

"registry-mirrors": ["https://7o6gyryt.mirror.aliyuncs.com"],

"exec-opts": ["native.cgroupdriver=systemd"]

}

EOF

systemctl daemon-reload

systemctl restart docker

# 9. configure k8s source and install k8s

cat >/etc/yum.repos.d/kubernetes.repo <<EOF

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.tuna.tsinghua.edu.cn/kubernetes/yum/repos/kubernetes-el7-x86_64/

enabled=1

gpgcheck=0

EOF

yum install -y kubelet kubeadm kubectl

systemctl enable kubelet --now

# 10. check version

docker --version

kubelet --version

master 节点脚本执行成功后,如下图所示

# 将绿色框选中的部分在 master 节点执行,蓝色框选中的部分在 node 节点执行

# node 节点加入 master 节点成功后如图所示

# 在 master 节点上查看,此时状态都是 NotReady( master 节点是因为缺少网络插件,node 节点是缺少网络插件对应的镜像和容器 )

# 通过 GitHub 下载 flannel 插件( 下载地址:https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml )

# 安装这个插件( Warning 后面的表示从 1.25 以后的版本这个 flannel 插件将不能再被使用)

# 安装完插件之后,node 节点就有了 flannel 插件相关的镜像和容器,并且 k8s 集群的状态都变成了 Ready

posted @ 2022-04-29 14:53  demoduan  阅读(385)  评论(0)    收藏  举报