部署环境

系统ubuntu 20.04
kubeadmv1.26.3
kubernetes

v1.26.3

cri-dockerd0.3.1.3
flannelv0.21.4

参考文档:

部署基于docker和cri-dockerd的Kubernetes v1.25.3_老wang你好的博客-CSDN博客

准备linux环境

1、修改IP地址

     主节点修改ip地址为10.0.0.101

     从节点修改IP地址为10.0.0.104、10.0.0.105、10.0.0.106

vim /etc/netplan/00-installer-config.yaml

netplan apply
ip a 

2、修改主机名

     主节点修改主机名为k8s-master01

     从节点修改主机名为k8s-node01k8s-node02k8s-node03

hostnamectl set-hostname k8s-master01
hostnamectl set-hostname k8s-node01
hostnamectl set-hostname k8s-node02
hostnamectl set-hostname k8s-node03

3、添加主机名解析

     每台服务器都要添加,无论主从

cat >> /etc/hosts << EOF
10.0.0.101 k8s-master01 k8s-master01.wang.org kubeapi.wang.org kubeapi
10.0.0.102 k8s-master02 k8s-master02.wang.org
10.0.0.103 k8s-master03 k8s-master03.wang.org
10.0.0.104 k8s-node01 k8s-node01.wang.org
10.0.0.105 k8s-node02 k8s-node02.wang.org
10.0.0.106 k8s-node03 k8s-node03.wang.org
EOF

4、时间同步

cat > /etc/apt/sources.list << EOF
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
EOF
apt clean all
apt update
apt -y install chrony

安装完chronyd再通过下面的命令配置chronyd

sed  -ri  "17s/(pool).*/\1 ntp1.aliyun.com iburst maxsources 4/" /etc/chrony/chrony.conf
sed  -ri  "18s/(pool).*/\1 s1a.time.edu.cn iburst maxsources 1/" /etc/chrony/chrony.conf
sed  -ri  "19s/(pool).*/\1 s1b.time.edu.cn iburst maxsources 1/" /etc/chrony/chrony.conf
sed  -ri  "20s/(pool.*)/\\t/" /etc/chrony/chrony.conf
timedatectl set-timezone Asia/Shanghai
systemctl start chronyd
systemctl is-active chronyd
date

5、禁用swap设备

sed -r -i '/\/swap/s@^@#@' /etc/fstab ; swapoff -a ; systemctl --type swap

6、关闭防火墙

ufw disable ; ufw status

至此,基础linux环境已经配好

部署应用

部署docker

1、安装docker

参考网站:docker-ce | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

#先设置环境变量,但是不配置环境变量好像更快
export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
# 如您使用 curl , 
apt -y install curl
curl -fsSL https://get.docker.com/ | sh
# 如您使用 wget ,
apt -y install wget
wget -O- https://get.docker.com/ | sh

2、 配置docker镜像的加速源

cat > /etc/docker/daemon.json << EOF
{
        "registry-mirrors": [
                  "https://docker.mirrors.ustc.edu.cn",
                  "https://hub-mirror.c.163.com",
                  "https://reg-mirror.qiniu.com",
                  "https://registry.docker-cn.com"
        ],
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
                  "max-size": "200m"
        }
}
EOF
systemctl daemon-reload;systemctl restart docker;docker info

安装cri-dockerd

1、查看自己系统的架构相关信息

lsb_release -rc ; dpkg --print-architecture

2、在浏览器下载适配自己版本的cri-dockerd文件,并传到linux服务器

https://github.com/Mirantis/cri-dockerd/releases/

3、安装cri-dockerd

dpkg -i cri-dockerd_0.3.1.3-0.ubuntu-focal_amd64.deb

4、检查cri-dockerd状态

systemctl status cri-docker.service

安装kubelet、kubeadm和kubectl

1、安装kubelet、kubeadm和kubectl

     参考网站:kubernetes镜像_kubernetes下载地址_kubernetes安装教程-阿里巴巴开源镜像站

apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl

2、设置kubelet开机自启,查看kubeadm版本信息

systemctl enable kubelet ; kubeadm version

整合kubelet和cri-dockerd

1、编辑service文件,把启动程序的参数换成下面这个

vim /usr/lib/systemd/system/cri-docker.service
ExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8 --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d

2、重新加载cri-dockerd服务

systemctl daemon-reload ; systemctl restart cri-docker.service ; systemctl status cri-docker

配置kubelet

如果不配置该文件,后续在执行每条kubeadm命令时都需要加上一个参数"--cri-socket unix:///run/cri-dockerd.sock"

1、创建文件夹

mkdir /etc/sysconfig

2、编辑kubelet配置文件

cat > /etc/sysconfig/kubelet << EOF
KUBELET_KUBEADM_ARGS="--container-runtime=remote --container-runtime-endpoint=/run/cri-dockerd.sock"
EOF

配置kubernetes

初始化master节点

在k8s-master01上执行以下操作

1、查看需要的images列表

kubeadm config images list

2、拉取镜像

  • 通过kubernetes镜像源拉取镜像
    kubeadm config images pull --cri-socket unix:///run/cri-dockerd.sock
  • 通过阿里云镜像源拉取镜像
    kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers --cri-socket unix:///run/cri-dockerd.sock

 3、初始化主节点

systemctl daemon-reload ; systemctl restart cri-docker.service
kubeadm init --apiserver-advertise-address  10.0.0.101 --kubernetes-version=v1.26.3 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --token-ttl=0 --cri-socket unix:///run/cri-dockerd.sock --upload-certs --image-repository registry.aliyuncs.com/google_containers

初始化主节点之后,把加入主节点的这条命令复制出来,后面从节点加入到主节点时会用到的

请把换行符去掉,把命令写在一行里面

把***换行符去掉,命令写一行里

后面再加上调用cri 的参数

kubeadm join 10.0.0.101:6443 --token q53qro.3yv4fh1azerb5le2 --discovery-token-ca-cert-hash sha256:440e0c28bdba85d6042c5f59c2e318093d0c25f6e2eabf03e3ebe778d95b7574 --cri-socket unix:///run/cri-dockerd.sock

保存master认证文件

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

部署flannel网络插件

1、查看系统架构

dpkg --print-architecture

2、下载对应版本的flannel插件

https://github.com/flannel-io/flannel/releases

3、创建/opt/bin/目录

mkdir /opt/bin/ ; cd /opt/bin/

4、将文件放到/opt/bin/目录下,并解压

     确保flanneld*是有执行权限的

tar xf flannel-v0.21.4-linux-amd64.tar.gz
ll flanneld*

5、通过配置文件启用flannel

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

6、检查flannel是否启动

kubectl get pods -n kube-flannel

验证master节点就绪状态

kubectl get nodes

从初始化master到此,所有步骤都是在主节点上操作的

从节点加入集群

master部署成功之后,终端上会显示一串从节点添加到集群中的命令,将这个命令中的换行符去掉,再在命令最后加上"--cri-socket unix:///run/cri-dockerd.sock",从节点就能成功加入集群

systemctl restart kubelet
kubeadm join 10.0.0.101:6443 --token q53qro.3yv4fh1azerb5le2 --discovery-token-ca-cert-hash sha256:440e0c28bdba85d6042c5f59c2e318093d0c25f6e2eabf03e3ebe778d95b7574 --cri-socket unix:///run/cri-dockerd.sock

验证从节点添加结果

在主节点上执行

kubectl get nodes

快来跟我做好朋友吧

Logo

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

更多推荐