Ubuntu部署kubernetes(k8s)
Ubuntu20.04部署kubernetes v1.26.3
部署环境
系统 | ubuntu 20.04 |
kubeadm | v1.26.3 |
kubernetes | v1.26.3 |
cri-dockerd | 0.3.1.3 |
flannel | v0.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-node01
、k8s-node02
、k8s-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
快来跟我做好朋友吧
更多推荐
所有评论(0)