官方网站:https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
下载并解压离线安装包 首先配置好docker仓库,若不会配置,可以参考该文章中配置方法:https://blog.csdn.net/m0_37868230/article/details/106862267#t6 下载docker-ce并设置为开机自启
yum install -y docker-ce systemctl start docker.service systemctl enable docker.service查看docker信息
docker info消除docker中存在的警告,将bridge-nf-call-iptables和bridge-nf-call-ip6tables开启
vim /etc/sysctl.conf ### net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 ### sysctl --system # 生效可以看到,警告已经消除,可正常使用。 编辑harbor配置文件
vim harbor.yml运行检测环境
./install.sh可以看到,缺少 docker-compose[单台主机上维护多个容器] 环境 下载并搭建docker-compose环境
mv docker-compose-Linux-x86_64-1.24.1 /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
这里可以使用之前自己的docker,也可以使用清华或者阿里的docker。 安装系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2部署docker仓库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装docker-ce 报错,查看错误信息是缺少不低于2:2.74版本的container-selinux 下载container-selinux并安装 将安装包上传到共享仓库上 更新仓库repo数据 在k8s1将docker.repo复制给k8s3和k8s4
scp docker-ce.repo k8s3:/etc/yum.repos.d/在k8s3和k8s4安装docker
yum install -y docker-ce启用,使其 docker info 正常使用
vim /etc/sysctl.conf ### net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 ### sysctl --system # 生效启动并设置为开机自启
systemctl enable --now docker.service官方网站:https://kubernetes.io/zh/docs/setup/production-environment/container-runtimes/#docker
重点:native.cgroupdriver 修改为 systemd 模式 原先的模式为: 重启docker
systemctl restart docker.service可以看到,Cgroup Driver 已经修改为 systemd 的模式 将文件复制到k8s3和k8s4上,并重启docker
禁用swap[三个k8s集群节点都需要] swapoff -a vim /etc/fstab ### #/dev/mapper/rhel-swap swap swap defaults 0 0 ###安装Docker-ce 这个前面已经进行了详细的介绍 设置仓库[三个节点均设置]
vim /etc/yum.repos.d/k8s.repo ### [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7- x86_64/ enabled=1 gpgcheck=0 ###安装软件包[三个节点均安装]
yum install -y kubelet kubeadm kubectl开启服务并设置开机自启
systemctl enable --now kubelet
创建集群前的准备:
一台或多台运行兼容deb / rpm的Linux操作系统的计算机每台主机至少要分配2GB内存空间用作master节点的计算机上至少有2个CPU集群中所有主机需要能够联网查看默认的配置信息
kubeadm config print init-defaults列出所需镜像
kubeadm config images list # 列出所需镜像 kubeadm config images list --image-repository registry.aliyuncs.com/google_containers # 指定镜像仓库位置并列出所需镜像可以看到,kubeadm默认读取的是k8s.gcr.io镜像库。但事实上,当前我们无法直接访问到k8s.gcr.io镜像库,需要翻墙才可以。因此我们就需要去指定镜像库,这里我们使用阿里云的镜像库 拉取镜像
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers这里出现了报错。查看错误信息,是因为我使用的k8s是最新的,远程仓库中没有更新。 指定版本去拉取
kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers --kubernetes-version 版本号可以看到,镜像已经拉取成功
harbor主机[k8s1]将证书传给master节点主机[k8s2] master节点主机登陆reg.harbor.com
docker login reg.harbor.com将镜像上传到仓库
for i in `docker images | grep registry | awk '{print $1":"$2}' | awk -F '/' '{print $3}'`; do > docker tag registry.aliyuncs.com/google_containers/$i reg.harbor.com/library/$i; > docker push reg.harbor.com/library/$i > done登陆harbor仓库查看 将证书传给另外两个节点,以便用来拉取镜像 删除阿里云仓库镜像,只保留私有仓库镜像
for i in `docker images | grep registry.aliyuncs.com | awk '{ print $1":"$2 }'`; do docker rmi $i; done初始化集群 –pod-network-cidr=10.244.0.0/16 # 使用flannel网络组件时必须添加
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.harbor.com/library报错,找不到版本1.18.5,默认是找软件版本,和我们实际版本不一致,指定版本 --kubernetes-version v1.18.3
kubeadm init --pod-network-cidr=10.244.0.0/16 --image-repository reg.harbor.com/library --kubernetes-version v1.18.3 --ignore-preflight-errors=NumCPU节点扩容
kubeadm join 192.168.1.21:6443 --token ywa2ks.u6je272aslskl73x \ --discovery-token-ca-cert-hash sha256:e1d4464a12968a663aefd51550a346f5da195550e7bc9869e109d37622f6bfb5上图为初始化成功时最后系统打印的信息,将红框部分内容在其他节点运行(k8s3,k8s4) 注意,这里的token会过期(默认24小时)过期后其他节点要加入时需要生成新的token
kubeadm token create配置kubectl
**创建一个普通用户** useradd kubeadm 这里要注意:需要对普通用户权限进行设置 visudo ### kubeadm ALL=(ALL) NOPASSWD:ALL ### su - kubeadm mkdir -p $HOME/.kube #创建目录 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config **使用超级用户** mkdir -p $HOME/.kube cp -i /etc/kubernetes/admin.conf $HOME/.kube/config chown $(id -u):$(id -g) $HOME/.kube/config我使用的是root用户,可以创建普通用户,然后通过sudo授权,关键在/etc/kubernetes/admin.conf文件
kubectl get node ##配置完成后查看节点 kubectl get all配置kubectl命令补齐功能
echo "source <(kubectl completion bash)" >> ~/.bashrc source ~/.bashrc安装flannel网络组件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml其他网络组件:[https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create- cluster-kubeadm/#pod-network](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create- cluster-kubeadm/#pod-network) Master查看状态
kubectl get cs kubectl get nodes若node节点显示notready,参考该文章:https://www.cnblogs.com/lph970417/p/11805934.html
kubectl get pod -n kube-system