怎样自动化centos k8s部署流程

958
2025/2/25 3:32:09
栏目: 智能运维
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

自动化部署CentOS上的Kubernetes(k8s)集群可以大大提高效率和一致性。以下是一个详细的步骤指南,帮助你实现这一目标。

环境准备

  1. 虚拟机准备:使用VMware或其他虚拟机软件创建三台CentOS 7虚拟机,分别作为Master、Node1和Node2。
  2. 硬件配置:每台虚拟机至少需要2GB RAM、2个CPU和30GB硬盘空间。
  3. 网络配置:将所有虚拟机配置在同一个网络中,确保它们可以相互通信。

安装基础软件包

在所有节点上执行以下命令,安装必要的基础软件包:

yum update -y
yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack telnet ipvsadm

配置静态IP

为每个节点配置静态IP地址,并确保它们在同一个网段内:

# 编辑网络配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改以下内容
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
# 重启网络服务
systemctl restart network

安装Docker

在所有节点上安装Docker,并配置Docker使用systemd作为cgroup driver:

# 添加Docker的yum源
cat > /etc/yum.repos.d/docker-ce.repo <<EOF
[docker-ce]
name=Docker CE
baseurl=https://download.docker.com/linux/centos/docker-ce/stable
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
EOF
# 安装Docker
yum install -y docker-ce
# 配置Docker使用systemd作为cgroup driver
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriversystemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker

安装Kubernetes组件

在所有节点上安装Kubernetes组件(kubeadm、kubelet和kubectl):

# 添加Kubernetes的yum源
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
# 安装Kubernetes组件
yum install -y kubelet kubeadm kubectl
# 设置开机启动
systemctl enable kubelet
systemctl start kubelet
systemctl enable kubeadm
systemctl start kubeadm

初始化Master节点

在Master节点上初始化Kubernetes集群:

kubeadm init --apiserver-advertise-address 192.168.1.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.21.0 --service-cidr 10.96.0.0/12 --pod-network-cidr 10.244.0.0/16

配置kubectl

在Master节点上配置kubectl,以便在命令行中管理集群:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

部署网络插件

在Master节点上部署网络插件(例如Flannel):

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

加入Worker节点

在Worker节点上运行以下命令,加入集群:

kubeadm join 192.168.1.100:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>

自动化脚本

你可以使用自动化脚本来简化上述步骤。以下是一个简单的自动化脚本示例:

#!/bin/bash

# 配置主机环境
echo "配置主机环境..."
yum update -y
yum install -y wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack telnet ipvsadm

# 配置静态IP
echo "配置静态IP..."
for node in node1 node2; do
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=static/'
    sed -i 's/ONBOOT=no/ONBOOT=yes/'
    IPADDR=192.168.1.$(echo $((RANDOM % 256)) + 100)
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.1
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    echo "IPADDR=$IPADDR" >> /etc/sysconfig/network-scripts/ifcfg-ens33
    echo "NETMASK=$NETMASK" >> /etc/sysconfig/network-scripts/ifcfg-ens33
    echo "GATEWAY=$GATEWAY" >> /etc/sysconfig/network-scripts/ifcfg-ens33
    systemctl restart network
done

# 安装Docker
echo "安装Docker..."
cat > /etc/yum.repos.d/docker-ce.repo <<EOF
[docker-ce]
name=Docker CE
baseurl=https://download.docker.com/linux/centos/docker-ce/stable
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
EOF
yum install -y docker-ce
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriversystemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker

# 安装Kubernetes组件
echo "安装Kubernetes组件..."
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet
systemctl start kubelet
systemctl enable kubeadm
systemctl start kubeadm

# 初始化Master节点
echo "初始化Master节点..."
kubeadm init --apiserver-advertise-address 192.168.1.100 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.21.0 --service-cidr 10.96.0.0/12 --pod-network-cidr 10.244.0.0/16

# 配置kubectl
echo "配置kubectl..."
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

# 部署网络插件
echo "部署网络插件..."
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 加入Worker节点
echo "加入Worker节点..."
for node in node1 node2; do
    kubeadm join 192.168.1.100:6443 --token <token>

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: CentOS系统下的NTP时间同步服务怎么配置