溫馨提示×

怎樣自動化centos k8s部署流程

小樊
33
2025-02-25 03:05:02
欄目: 智能運維

自動化部署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>

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女