主要工作是将命令整理为编写成脚本,方便k8s的搭建。
我自己遇到问题的地方做了一些改动。
若运行中脚本报错,请搜索资料使报错命令的作用生效,然后接着报错命令往下执行,不要重复执行已经成功的命令

操作系统:CentOS7.x-86_x64
集群设置:1 master,2 node
硬件配置:2GB,2个CPU,硬盘30GB以上

一、所有节点前置要求

#!/bin/bash

set -xe

# 1.关闭防火墙
systemctl stop firewalld
## 开机禁用防火墙自启:
systemctl disable firewalld.service

# 2.关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config

# 3.关闭swap
swapoff -a
## 永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab

# 4.设置主机名
echo "请在另一个终端进行或将本脚本进程挂入后台进行操作"
echo "请通过 ‘hostnamectl set-hostname <主机名>’ 来设置主机名"
# 5.修改hosts文件
echo "请向 '/etc/hosts' 中添加要创建集群的全部节点的域名解析条目(<节点ip> <节点名>)"
echo "完成后将本脚本进程调入前台并回车"
read

# 6.加载桥接驱动
modprobe br_netfilter

# 7.将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

# 8.执行以下命令让设置生效
sysctl --system

# 9.所有节点执行时间同步
systemctl enable --now chronyd



# 1.安装docker依赖包
yum install -y yum-utils

# 2.设置阿里镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 3.安装docker服务
yum install docker-ce docker-ce-cli containerd.io -y

# 4. 修改 /etc/docker/daemon.json
echo "向/etc/docker/daemon.json中添加:\"exec-opts\": [\"native.cgroupdriver=systemd\"]"
read

# 5.启动docker服务
systemctl enable --now docker

# 6.查看docker服务是否正常启动成功
systemctl status docker

# 7.生成 containerd 的默认配置文件
containerd config default > /etc/containerd/config.toml

# 8.修改sandbox_image源
sed -i 's/registry.k8s.io/registry.aliyuncs.com\/google_containers/g' /etc/containerd/config.toml

# 9.重启 containerd 服务
systemctl daemon-reload
systemctl restart containerd.service



# 1.添加阿里云YUM软件源
# 这会覆盖 /etc/yum.repos.d/kubernetes.repo 中现存的所有配置
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.29/rpm/repodata/repomd.xml.key
EOF

# 2.安装kubeadm、kubelet和kubectl
yum install -y kubectl
yum install -y kubelet
yum install -y kubeadm

# 3.启动k8s服务
systemctl enable kubelet

# 4.查看k8s服务是否正常,暂时未激活
systemctl status kubelet

二、主节点部署

#!/bin/bash

set -xe

# 0.将镜像手动拉取下来,这样在初始化的时候回更快一些
kubeadm config images pull  --image-repository registry.aliyuncs.com/google_containers

echo "请复制下一条命令的输出"
# 1.在master节点上部署kubetnets
kubeadm init \
--kubernetes-version=$(kubectl version | awk 'NR==1{print $3}') \
--apiserver-advertise-address=$(hostname -i) \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--ignore-preflight-errors=all
# –apiserver-advertise-address # 集群通告地址(master 机器IP,这里用的万兆网)
# –image-repository # 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
# –kubernetes-version #K8s版本,与上面安装的一致
# –service-cidr #集群内部虚拟网络,Pod统一访问入口,可以不用更改,直接用上面的参数
# –pod-network-cidr #Pod网络,与下面部署的CNI网络组件yaml中保持一致,可以不用更改,直接用上面的参数

# 2.创建文件夹将`admin.conf`加入用户目录
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 3.查看现在k8s情况
kubectl get nodes

# 4.安装命令补全工具
sudo yum -y install bash-completion
cat << EOF >> ~/.bash_profile
export KUBECONFIG=/etc/kubernetes/admin.conf
alias k=kubectl
source <(kubectl completion bash)
EOF
source ~/.bash_profile

# 5.安装部署CNI网络插件
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
echo "使用 'kubectl get pods -n kube-system' 命令查看pods状态,等待 含有coredns的pods 全部 READY"

三、从节点部署

从节点加入集群。分别在node1和node2中,执行刚刚kubeadm init成功后下面打印的命令,类似下面的命令

kubeadm join 192.168.253.148:6443 --token 6509w1.4nu34gycu80kl4h5 \
    --discovery-token-ca-cert-hash sha256:9560eb6f7201c8032469a4204f33b0e0dd83a7118ede09d3b04c6d4ab2d723d2

验证是否加入成功

在主节点中

kubectl get nodes

三个节点都为Ready,即说明k8s的安装部署完成!

参考:

【k8s】VMware16搭建k8s集群(亲试无坑)
kubernetes(k8s)集群超级详细超全安装部署手册

Logo

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

更多推荐