Docker环境
添加Docker国内源配置
添加阿里云docker源
vim /etc/apt/sources.list
deb http://mirrors.aliyun.com/docker-ce/linux/debian stretch stable
apt update -y
apt update -y 出现证书错误请安装对应证书
安装最新版本docker
apt-get install docker-ce docker-ce-cli containerd.io -y
安装指定版本docker
apt-cache madison docker-ce
docker-ce | 5:19.03.153-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.143-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.133-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.123-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.113-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.103-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.93-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.83-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.73-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
docker-ce | 5:19.03.63-0debian-stretch | http://mirrors.aliyun.com/docker-ce/linux/debian stretch/stable amd64 Packages
使用第二列中的版本字符串安装特定版本,例如5:19.03.153-0debian-stretch
apt-get install docker-ce=5:19.03.15~3-0~debian-stretch docker-ce-cli=5:19.03.15~3-0~debian-stretch containerd.io -y
Docker 镜像加速
国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
- 科大镜像:https://docker.mirrors.ustc.edu.cn/
- 网易:https://hub-mirror.c.163.com/
- 阿里云:https://<你的ID>.mirror.aliyuncs.com
- 七牛云:https://reg-mirror.qiniu.com
当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。
阿里云镜像获取地址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址
配置七牛云镜像仓库
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://reg-mirror.qiniu.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
native.cgroupdriver=systemd
后续使用K8S提前配置不使用k8s可以不配置
重新启动服务
systemctl daemon-reload
systemctl restart docker
检查加速器是否生效
docker info
Registry Mirrors:
https://reg-mirror.qiniu.com/
K8S环境
主机名 | 地址 | 备注 |
---|---|---|
k8s-master | 10.0.20.7 | 主节点 |
k8s-node1 | 10.0.20.3 |
前置环境配置
每台主机配置host
vim /etc/hosts
添加配置
10.0.20.3 k8s-node1 10.0.20.7 k8s-master
关闭各节点的防火墙
systemctl disable nftables.service && systemctl stop nftables.service && systemctl status nftables.service
永久禁用各节点的交换分区
swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab # 注释掉swap那一行
同步各节点的时区
timedatectl set-timezone Asia/Shanghai # 设置系统时区为中国/上海
K8S源配置
kubeadm 不能帮你安装或者管理 kubelet 或 kubectl, 所以你需要确保它们与通过 kubeadm 安装的控制平面的版本相匹配。 如果不这样做,则存在发生版本偏差的风险,可能会导致一些预料之外的错误和问题。 然而,控制平面与 kubelet 之间可以存在一个次要版本的偏差,但 kubelet 的版本不可以超过 API 服务器的版本
更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包
apt-get update -y apt-get install -y apt-transport-https ca-certificates curl -y
下载 Google Cloud 公开签名秘钥
# sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg # 将证书下载到/usr/share/keyrings/kubernetes-archive-keyring.gpg sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg
添加 Kubernetes apt 仓库
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本
sudo apt-get upgrade -y && sudo apt-get update -y
安装K8S
K8S 1.20版本以前,CRI内部维护了DockerShim,CR使用的是Docker, CRI与CR进行交互时是通过DockerShim桥接来实现的
K8S 1.20版本以后,CRI内部取消的DockerShim(市场上大部分CR都遵循了K8S的CRI规范,KS8为了适应更多的CR而放弃了Docker,如果还想使用Docker则需要外部单独安装cri-dockerd),CR使用的是Containerd
使用docker容器建议使用K8S版本1.20以前版本,1.20版本后需要搭配cri-dockerd才能使用
安装最新版本
apt-get install -y kubelet kubeadm kubectl
# sudo apt-get remove kubelet kubeadm kubectl # 卸载
查看可用版本
apt-cache madison kubeadm
# 安装1.19.1-00 版本
apt-get install -y kubelet=1.19.1-00 kubeadm=1.19.1-00 kubectl=1.19.1-00
锁定版本
sudo apt-mark hold kubelet kubeadm kubectl # 锁定版本,标记软件包不被自动更新
添加 kubelet 开机自启
sudo systemctl enable kubelet # 添加 kubelet 开机自启
sudo systemctl restart kubelet && sudo systemctl status kubelet # 重启并查看状态
初始化master节点
# kubernetes-version #制定 kubernetes 版本
# image-repository #选择用于拉取镜像的容器仓库
# apiserver-advertise-address #当前 Master 主机的ip地址
# service-cidr #为服务的虚拟 IP 地址段,默认值:"10.96.0.0/12"
# pod-network-cidr #指明 pod 网络可以使用的 IP 地址段。如果设置了这个参数,控制平面将会为每一个节点自动分配 CIDR
kubeadm init \
--kubernetes-version v1.19.1 \
--image-repository registry.aliyuncs.com/google_containers \
--apiserver-advertise-address 10.0.20.7 \
--service-cidr 10.245.0.0/12 \
--pod-network-cidr 10.244.0.0/16
安装成功提示
Your Kubernetes control-plane has initialized successfully!
Your Kubernetes control-plane has initialized successfully! To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ Then you can join any number of worker nodes by running the following on each as root: kubeadm join 10.0.20.7:6443 --token z6f8b5.eg77ay382qnkmhu3 \ --discovery-token-ca-cert-hash sha256:748d1140b11748a015a4fbb3629b99050e1eb4749b1af12e23c0e348ece1dc9a
Master节点执行
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
所有Node节点执行(加入Node节点到Master节点)
kubeadm join 10.0.20.7:6443 --token z6f8b5.eg77ay382qnkmhu3 \ --discovery-token-ca-cert-hash sha256:748d1140b11748a015a4fbb3629b99050e1eb4749b1af12e23c0e348ece1dc9a
其他关联配置
修改主机名
hostnamectl set-hostname master
重新连接SSH主机名生效
Vim 无法粘贴
vim /usr/share/vim/vim90/defaults.vim
大约84行位置 set mouse=a
改为 set mouse-=a
查看Debain发行版本
lsb_release -a
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
常见错误处理
更新源证书错误 NO_PUBKEY B53DC80D13EDEF05
Err:6 https://mirrors.tuna.tsinghua.edu.cn/kubernetes/apt kubernetes-xenial InRelease
The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY B53DC80D13EDEF05
安装证书需要依赖
apt-get install apt-transport-https ca-certificate curl gnupg2 software-properties-common -y
获取公钥: 你需要获取缺失的公钥。在这个例子中,公钥是
B53DC80D13EDEF05
。你可以使用以下命令获取公钥:gpg --recv-keys --keyserver keyserver.ubuntu.com B53DC80D13EDEF05
如果你在防火墙或代理的后面,可能需要配置一下 GPG 来使用代理:
gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys B53DC80D13EDEF05
将公钥添加到系统: 下载公钥后,将其添加到 APT 的密钥环中:
gpg --export --armor B53DC80D13EDEF05 | sudo apt-key add -
或者,如果你使用的是较新的 Ubuntu | Debian 版本,可以使用以下命令:
gpg --export --armor B53DC80D13EDEF05 | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
更新 APT: 更新 APT 包列表,以确保你的系统可以识别并使用新添加的密钥:
sudo apt-get update
重新尝试安装: 现在,你应该能够重新尝试安装 Kubernetes 包:
sudo apt-get install -y kubelet kubeadm kubectl