一、kubeadm
kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具。这个工具能通过两条指令完成一个 kubernetes 集群的部署:
# 创建一个 Master 节点
$ kubeadm init
# 将一个 Node 节点加入到当前集群中
$ kubeadm join <Master 节点的 IP 和端口 >
二、前置要求
- 一台或多台机器,操作系统 CentOS7.x-86_x64。
- 硬件配置:2GB 或更多 RAM,2 个 CPU 或更多 CPU,硬盘 30GB 或更多
- 集群中所有机器之间网络互通
- 可以访问外网,需要拉取镜像
- 禁止 swap 分区
三、部署步骤
- 在所有节点上安装 Docker 和 kubeadm
- 部署 Kubernetes Master
- 部署容器网络插件
- 部署 Kubernetes Node,将节点加入 Kubernetes 集群中
- 部署 Dashboard Web 页面,可视化查看 Kubernetes 资源
四、环境准备
先准备三台虚拟机,配置好网络设置、节点名及基础环境。
可以参考这篇文章:Hadoop (三) --------- Hadoop 运行环境搭建 (虚拟机)
将每一台虚拟机的名称从 hadoop 改成 node 即可。。。。。
关于 XShell 所有节点执行相同的命令,我们在 查看 ------> 撰写 -----> 撰写栏 ,然后在下面输入命令即可
date 查看时间
yum install -y ntpdate
ntpdate time.windows.com 同步最新时间
关闭 selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
关闭 swap:
swapoff -a 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab 永久
free -g 验证,swap 必须为 0;
五、安装环境
所有节点安装 Docker、kubeadm、kubelet、kubectl。
Kubernetes 默认 CRI (容器运行时) 为 Docker,因此先安装 Docker。
1. 安装 docker
① 卸载 docker
卸载系统之前的 docker
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
② 安装 Docker-CE
Docker CE 指的是 docker 社区版
安装必须的依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置 docker repo 的 yum 位置,即设置存储库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装 docker,以及 docker-cli
sudo yum install -y docker-ce docker-ce-cli containerd.io
③ 配置 docker 加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
④ 启动 docker & 设置 docker 开机自启
systemctl enable docker
基础环境准备好,可以给三个虚拟机备份一下;为 node103 分配 16g,剩下的3g。方便未来侧测试
2. 添加阿里云 yum 源
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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
3. 安装 kubeadm,kubelet 和 kubectl
yum list|grep kube
yum install -y kubelet-1.17.3 kubeadm-1.17.3 kubectl-1.17.3
systemctl enable kubelet
systemctl start kubelet
六、部署 k8s-master
1. master 节点初始化
kubeadm init \
--apiserver-advertise-address=192.168.38.131 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--kubernetes-version v1.17.3 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16
由于默认拉取镜像地址 k8s.gcr.io 国内无法访问,这里指定阿里云镜像仓库地址。可以手动按照我们的 images.sh 先拉取镜像,地址变为 registry.aliyuncs.com/google_containers 也可以。
--apiserver-advertise-address=192.168.38.131 这个参数就是master主机的IP地址,例如我的Master主机的IP是:192.168.38.131
--image-repository=registry.aliyuncs.com/google_containers 这个是镜像地址,由于国外地址无法访问,故使用的阿里云仓库地址:registry.aliyuncs.com/google_containers
--kubernetes-version=v1.17.4 这个参数是下载的k8s软件版本号
--service-cidr=10.96.0.0/12 这个参数后的IP地址直接就套用10.96.0.0/12 ,以后安装时也套用即可,不要更改
--pod-network-cidr=10.244.0.0/16 k8s内部的pod节点之间网络可以使用的IP段,不能和service-cidr写一样,如果不知道怎么配,就先用这个10.244.0.0/16
科普:无类别域间路由(Classless Inter-Domain Routing、CIDR)是一个用于给用户分配IP地址以及在互联网上有效地路由 IP 数据包的对 IP 地址进行归类的方法。拉取可能失败,需要下载镜像。
运行完成提前复制:加入集群的令牌
也可以将下载镜像所用到的脚本上传到 node101 节点,并执行 master_images.sh 这个脚本,因为上述命令下载镜像可能会失败,执行完之后,在执行上面初始化命令。。。。
执行完成初始化命令。。。
2. 测试 kubectl (主节点执行)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
$ kubectl get nodes 获取所有节点
目前 master 状态为 notready。等待网络加入完成即可。
journalctl -u kubelet 查看 kubelet 日志
kubeadm join 192.168.38.131:6443 --token 8mgmlh.cgtgsp3samkvpksn \ --discovery-token-ca-cert-hash
七、安装 Pod 网络插件(CNI)
$ kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
以上地址可能被墙,大家获取上传我们下载好的 flannel.yml 运行即可,同时flannel.yml 中指定的 images 访问不到可以去 docker hub 找一个 wget yml 的地址,vi 修改 yml 所有 amd64 的地址都修改了即可。
kubectl apply -f kube-flannel.yml
等待大约 3 分钟
kubectl get pods -n kube-system 查看指定名称空间的 pods
kubectl get pods --all-namespaces查看所有名称空间的 pods
$ ip link set cni0 down
如果网络出现问题,关闭 cni0,重启虚拟机继续测试执行 watch kubectl get pod -n kube-system -o wide
监控 pod 进度等 3 -10 分钟,完全都是 running 以后继续
八、加入 Kubernetes Node
在 Node 节点执行。向集群添加新节点,执行在 kubeadm init 输出的 kubeadm join 命令:确保 node 节点成功
查看添加新节点的命令
kubeadm token create --print-join-command
在 node102 和 node103 节点执行 kubectl join 命令即可。。。
token 过期怎么办
kubeadm token create --print-join-command
kubeadm token create --ttl 0 --print-join-command
kubeadm join --token y1eyw5.ylg568kvohfdsfco --discovery-token-ca-cert-hashsha256: 6c35e4f73f72afd89bf1c8c303ee55677d2cdb1342d67bb23c852aba2efc7c73
执行 watch kubectl get pod -n kube-system -o wide
监控 pod 进度等 3-10 分钟,完全都是 running 以后使用 kubectl get nodes 检查状态文章来源:https://www.toymoban.com/news/detail-401797.html
文章来源地址https://www.toymoban.com/news/detail-401797.html
到了这里,关于谷粒商城 集群篇 (二) --------- K8s 集群安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!