vmware-16 Pro + ubuntu-20.04.3-live 手把手搭建k8s集群(超详细):第一篇-虚拟机安装及网络配置
docker 安装【所有节点都需要安装】小工具说明: xshell 可以使用 查看—>撰写—> 撰写栏、撰写窗口—>可以选择将命令发送到多会话,一起执行
官方文档:https://docs.docker.com/engine/install/ubuntu/ 也可以使用阿里云安装更快:https://developer.aliyun.com/article/110806
按步骤操作即可,默认安装最新的,也可以指定版本安装,需要注意版本的对应关系
# 指定版本号 sudo apt-get install docker-ce=5:20.10.8~3-0~ubuntu-focal docker-ce-cli=5:20.10.8~3-0~ubuntu-focal containerd.io #安装完成后验证 sudo docker run hello-world
docker 安装成功的日志及对应的版本号
设置阿里镜像加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 每个人的不一样,详细可以看以上地址的内容kubernetes 安装 安装前的准备【所有节点都需要安装】 1、关闭swap
#关闭swap sudo swapoff -a #修改/etc/fstab,注释掉swap那行,持久化生效 sudo vi /etc/fstab2、防止待机休眠
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target3、设置rp_filter的值
# 因为Gemfield的K8s集群即将部署的是calico网络插件,而calico需要这个内核参数是0或者1,但是Ubuntu20.04上默认是2,这样就会导致calico插件报下面的错误(这是个fatal级别的error) sudo vi /etc/sysctl.d/10-network-security.conf #将下面两个参数的值从2修改为1 #net.ipv4.conf.default.rp_filter=1 #net.ipv4.conf.all.rp_filter=1 # 执行命令使生效 sudo sysctl --system4、关闭防火墙
ufw disable5、修改hosts
# 修改hosts,增加节点关系 sudo vi /etc/hosts # 主节点执行 sudo hostnamectl set-hostname k8s-node-master # node-0 节点执行 sudo hostnamectl set-hostname k8s-node-0 # node-1 节点执行 sudo hostnamectl set-hostname k8s-node-1 #使用ping 命令检查节点连通性 比如:ping k8s-node-0
hosts文件内容
sudo groupadd docker sudo usermod -aG docker zhaowd # zhaowd 为用户名 sudo systemctl restart docker # 重启k8s安装【所有节点都需要安装】
官网:https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/
部署要求:
# 使用阿里镜像初始化
sudo apt update && sudo apt install -y apt-transport-https curl
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 修改镜像源
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
#安装 kubelet、kubeadm 和 kubectl;可以指定安装版本,默认最新
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
# 修改docker的cgroup与k8s一致
# 官网说明:https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/
vi /etc/docker/daemon.json
增加:"exec-opts": ["native.cgroupdriver=systemd"]
# 重启 docker
systemctl restart docker
# 设置阿里镜像
查看使用的镜像源
kubeadm config images list
修改镜像源:创建kubeadm.sh脚本,脚本内容如下,注意版本号
kubeadm config images list 命令可以查看已安装的版本号
执行脚本:bash ./kubeadm.sh
-----------------------------------------------
#!/bin/bash
set -e
KUBE_VERSION=v1.22.2
KUBE_PAUSE_VERSION=3.5
ETCD_VERSION=3.5.0-0
CORE_DNS_VERSION=v1.8.4
GCR_URL=k8s.gcr.io
ALIYUN_URL=registry.cn-hangzhou.aliyuncs.com/google_containers
images=(kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
coredns:${CORE_DNS_VERSION})
for imageName in ${images[@]} ; do
docker pull $ALIYUN_URL/$imageName
docker tag $ALIYUN_URL/$imageName $GCR_URL/$imageName
docker rmi $ALIYUN_URL/$imageName
done
-----------------------------------------------
集群初始化【Master节点执行】
官网:https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=192.169.0.0/16
# 扩展
# 可以使用如下命令,切换root用户
sudo -i
# 可以使用如下命令修改root用户密码
passwd 密码
# 执行如下命令,集群初始化完成
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 安装网络插件,参数信息见下面说明
kubectl apply -f https://docs.projectcalico.org/v3.9/manifests/calico.yaml
# 检查是否安装成功
kubectl get pods --all-namespaces -w
# 将从节点加入集群,在从节点执行
kubeadm join 192.168.49.130:6443 --token yu1ak0.2dcecvmpozsy8loh
--discovery-token-ca-cert-hash sha256:5c4a69b3bb05b81b675db5559b0e4d7972f1d0a61195f217161522f464c307b0
说明:
获取token: kubeadm token list
discovery-token-ca-cert-hash 参数获取:
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null |
openssl dgst -sha256 -hex | sed 's/^.* //'
# master节点上检查集群信息
kubectl get nodes
# 可以为从节点打标签
kubectl label node k8s-node-1 node-role.kubernetes.io/worker=worker
安装成功



