K8S
快速部署
安装环境
-
安装
docker
,并且启动服务,设置为开机自启# 下载安装 docker curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun # 配置阿里云镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://k47rrbam.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker # 设置docker 为开机启动,并且启动docker systemctl enable docker systemctl start docker
-
安装
k8s
的核心组件kubeadm
kubelet
kubectl
安装 kubeadm | Kubernetes官方安装指南
安装三个核心包,我们自带的服务器使用的是
linux
的centos
的发行版本,所以我们是red hat
公司的开源发行版本cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF # 将 SELinux 设置为 permissive 模式(相当于将其禁用) sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes sudo systemctl enable --now kubelet
直接采用
yum
包安装,这里配置的yum
镜像是google
的镜像,在国内下载速度显然是很慢的,我们选择配置aliyun
的镜像cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF # 将 SELinux 设置为 permissive 模式(相当于将其禁用) sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes sudo systemctl enable --now kubelet
这里需要注意一点,如果三个包是单独安装的,千万要注意版本兼容,这三个包本质上都是为了实现
kubernetes
的功能,三个包要相互协作,如果版本不兼容,可能会产生意料之外的错误。最好安装同一个版本然后就安装完毕了,就可以一些实现一些
k8s
的功能了kubeadm init # 初始化集群 kubeadm join # 其他节点加入集群
初始化集群时设置一些参数
kubeadm init \ --kubernetes-version 1.18.0 \ --apiserver-advertise-address=0.0.0.0 \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=10.245.0.0/16 \ --image-repository registry.aliyuncs.com/google_containers
否则会到进入
google
仓库拉起,很浪费时间
Kubeadm
kubeadm 是一个用来开启和运行最小可用集群的工具
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zah2VOVA-1635912218396)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20211103092826051.png)]
我们可以查看kubeadm
的帮助文档,可以看到kubeadm
提供了一个创建两个节点的集群的demo
- 在第一个机器上,使用
kubeadm
的kubeadm init
的命令进行初始化集群。 - 在第二个机器上,使用
kubeadm join
相关参数就可以加入第一个节点创建的集群。如果有多台机器执行此指令,就组建了一个多台机器的计算机集群。
除此之外,我们具体地查看一下kubeadm
的主要命令
kubeadm completion
:用特别的bash zsh or shell
命令输出kubeadm config
:管理集群的配置kubeadm init
:建立一个kubernetes
控制台,初始化主节点kubeadm join
:运行其他机器加入集群kubeadm reset
:用于恢复通过kubeadm init
或者kubeadm join
命令对节点进行的任何变更kubeadm token
:管理kubeadm join
使用的令牌kubeadm upgrade
:提升集群的版本kubeadm version
:查看版本信息
搭建k8s
集群
- 先下载
docker
,然后配置阿里云镜像加速,启动服务并且设置开机自启,然后进行docker
开启一个测试的容器
我们发现,有时候可能会出现一个问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I4Omw8UB-1635912218399)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20211103103742320.png)]
查询了相关资源,了解到了造成这问题的原因是docker
缺少一个依赖包,libseccomp-devel
,只要安装了这个包,问题就解决了
yum install -y libseccomp-devel
我们查了一下这个包是干啥的?
安全计算模式 seccomp(Secure Computing Mode)是自 Linux 2.6.10 之后引入到 kernel 的特性。一切都在内核中完成,不需要额外的上下文切换,所以不会造成性能问题。目前 在 Docker 和 Chrome 中广泛使用。使用 seccomp,可以定义系统调用白名单和黑名单,可以 定义出现非法系统调用时候的动作,比如结束进程或者使进程调用失败。
docker
本身需要对linux
内核的服务,我们在安装linux
版本的时候,镜像id
可能会造成这个问题,有的linux
镜像中包含这个包就不会遇到这个问题。
-
按照上面的步骤安装
k8s
核心包,注意使用阿里云的镜像包 -
初始化主节点
这里有很多坑
- 要配置
aliyun
仓库,要不然卡到爆 - 如果初始化过程中出现了错误,准备再次初始化之前,将上次初始化时创建的文件删除干净
- 版本问题,节点使用版本必须高于下载的
kubeadm
的版本,我们在下载时,没有设置版本号,所以下载的时k8s
的最新版本的,但是在阿里云的仓库中,没有和最新版想兼容的容器
所以安装
k8s
的时候千万不要完全按照官方的步骤走,因为基于google
镜像的速度真的感人我们这里要卸载
k8s
和删除相关的包,然后重新安装k8s
,docker不需要重新操作删除
k8s
集群-
删除
k8s
中的所有结点kubectl delete node -all
-
停止所有
k8s
服务for service in kube-apiserver kube-controller-manager kubectl kubelet kube-scheduler; do systemctl stop $service done
-
回退当前的节点的操作,并且删除所有的相关配置文件
kubeadm reset -f rm -rf ~/.kube/ rm -rf /etc/kubernetes/ rm -rf /etc/systemd/system/kubelet.service.d rm -rf /etc/systemd/system/kubelet.service rm -rf /usr/bin/kube* rm -rf /etc/cni rm -rf /opt/cni rm -rf /var/lib/etcd rm -rf /var/etcd yum clean all yum remove kube*
-
然后删除
docker
的所有镜像docker rmi -r $(docker images -aq)
重新安装
k8s
- 配置镜像
cat > /etc/yum.repos.d/kubernetes.repo << EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF
-
下载
k8s
,千万要指定版本,千万要指定版本,千万要指定版本 不然就会下载最新版,然后就掉坑了yum install -y kubelet-1.16.9 kubeadm-1.16.9 kubectl-1.16.9
-
设置开机启动
systemctl enable kubelet
-
初始化主节点
kubeadm init \ --kubernetes-version 1.18.8 \ --apiserver-advertise-address=0.0.0.0 \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=10.245.0.0/16 \ --image-repository registry.aliyuncs.com/google_containers
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FLLHbkEp-1635912218402)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20211103114609631.png)]
集群创建成功,控制节点成功初始化
结果最后一行给出的就是其他节点加入集群的脚本,因为需要令牌认证
kubeadm join 172.16.188.15:6443 --token pke3nd.c45isxxsbuadz4a2 \ --discovery-token-ca-cert-hash sha256:bb88f759348db4c3866e2dd7210069c405b8a520c377f470bb7b921ab81809a9
我们在其他两个结点运行这个脚本,其他两个结点就加入了这个集群
然后查看集群结点信息
kubecrl get nodes
我们发现又进坑了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LPrRntNH-1635912218404)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20211103115339140.png)]
继续坑,这个是为啥呢
需要将主节点的
/etc/kubernetes/admin.conf
配置文件拷贝从节点目录下,并且开启配置权限,刷新mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
然后再吃查看结点信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mmLIT9HM-1635912218405)(C:\Users\HP\AppData\Roaming\Typora\typora-user-images\image-20211103115821833.png)]
我们这样我们就可以看到集群的结点信息,集群的结点初始化和创建都是由
kubeadm
来负责的。
- 要配置
推荐一个无坑安装版安装Kubernetes(k8s)保姆级教程)