前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8S 1.10.1版本部署

K8S 1.10.1版本部署

作者头像
全栈程序员站长
发布2022-06-29 16:50:26
2240
发布2022-06-29 16:50:26
举报
文章被收录于专栏:全栈程序员必看

准备好几台机器,最好准备至少2台机器 我这里准备了3台机器,一台做master,2台做node 1.机器基本设置 1.1 设置主机名

代码语言:javascript
复制
hostnamectl set-hostname master  #在master机器上执行
hostnamectl set-hostname node1   #在node1机器上执行
hostnamectl set-hostname node2   #在node2机器上执行

1.2 设置三台机器时区,保证后续事件准确,如果每台机器的时间不一样,后续出现很多莫名其妙的问题

代码语言:javascript
复制
timedatectl set-timezone Asia/Shanghai   #在三台上都执行

1.3 添加主机至hosts文件

代码语言:javascript
复制
vim /etc/hosts  #三台机器都执行
#在打开的文件添加三行内容,内容为机器ip+名称,本文直接以master+node命名,实际可按照需求更改
#192.168.1.181 matser
#192.168.1.182 node1
#192.168.1.183 node2

1.4 关闭swap分区,很重要,swap分区不关闭,会直接导致部署失败,三台全部需要执行

代码语言:javascript
复制
swapoff -a  
vim /etc/fstab  #将swap所在行注释掉

1.5 修改iptables信息

代码语言:javascript
复制
 echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
 echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

关闭所有节点的seliux以及firewalld

代码语言:javascript
复制
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0 
systemctl disable firewalld
systemctl stop firewalld

2.安装docker 因为本次要部署的K8S版本为1.10.1版本,版本较低,所以docker版本不要安装太高的版本(亲测19.03版本不兼容)

代码语言:javascript
复制
yum install docker -y
systemctl start docker && systemctl enable docker

默认安装的是1.13版本(目前最新版本是1.13版本),不要安装docker-ce,docker-ce会安装19.03版本(截止目前的最新版本) 查看docker cgroup

代码语言:javascript
复制
docker info

1.10.1版本的K8S使用的是cgroup driver,1.14之后的版本才推荐使用systemd,docker与K8S两者必须要保持一致,否则会报错

在这里插入图片描述
在这里插入图片描述

如果查看到的cgroup不为cgroupfs,需要修改

代码语言:javascript
复制
vim /usr/lib/systemd/system/docker.service
在这里插入图片描述
在这里插入图片描述

修改完成后重载配置,重启docker

代码语言:javascript
复制
systemctl daemon-reload && systemctl restart docker

3.安装kubeadm,kubectl,kubelet 3.1 下载必要离线包,因为不下载的话,后面在初始化kubeadm时,会去自动拉去必要镜像,有些镜像需要翻墙才能下得下来

链接:https://pan.baidu.com/s/1tPGxcqUkepbGnVV934bOpQ 提取码:r0cz 复制这段内容后打开百度网盘手机App,操作更方便哦

3.2 安装,此步骤三天机器全部都需要执行 注:本文将所有K8S的文件放置在/home/k8s目录下,以下代码在使用时记得修改为实际路径

代码语言:javascript
复制
cd /home/k8s/kubernetes-1.10
tar -xvf kube-packages-1.10.1.tar
cd kube-packages-1.10.1
rpm -Uvh * --force --nodeps

在所有kubernetes节点上设置kubelet使用cgroupfs,与dockerd保持一致,否则kubelet会启动报错 默认kubelet使用的cgroup-driver=systemd

代码语言:javascript
复制
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

systemctl daemon-reload && systemctl restart kubelet

3.3 导入镜像,只导入了必要镜像,后续镜像很多的话,可以考虑搭建harbor存放镜像,此步骤三天机器全部都需要执行

代码语言:javascript
复制
docker load -i k8s-images-1.10.tar.gz

3.4 初始化master节点,此步骤只需要在master机器上执行

代码语言:javascript
复制
kubeadm init --kubernetes-version=v1.10.1 --pod-network-cidr=10.244.0.0/16
#初始化需要执行部署的版本,和ip段

初始化成功之后,记得记录一下join的加入命令,在node节点上执行该命令即可将node机器添加到master节点中

在这里插入图片描述
在这里插入图片描述

3.5 执行初始后成功后的提示命令

代码语言:javascript
复制
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

3.6 查看当前部署情况

代码语言:javascript
复制
kubectl get node

可以看到此时只有一个master节点,且状态为notready状态

在这里插入图片描述
在这里插入图片描述

这是因为还未部署网络插件,K8S可以采用多种网络方式,例如flannel,calico,openvswitch 本文采用flannel网络 3.7 部署flannel

代码语言:javascript
复制
cd /home/k8s/kubernetes-1.10
kubectl apply -f kube-flannel.yml  #配置文件可修改,本文直接使用默认配置

配置完成后等待一会儿,再次查看node状态

代码语言:javascript
复制
kubectl get node

可以看到状态变成正常

在这里插入图片描述
在这里插入图片描述

3.8 将node节点加入到master机器 直接复制master节点初始化后的命令(无需任何修改,直接复制执行),即可将node节点加入到master机器中 加入之后一会儿,可以看到2台node机器

在这里插入图片描述
在这里插入图片描述

4.到此步,集群部署完成

5.dashboard部署 直接使用离线包中的三个.yaml文件即可完成部署

代码语言:javascript
复制
cd /home/k8s/kubernetes-1.10
kubectl apply -f kubernetes-dashboard-http.yaml -f admin-role.yaml -f kubernetes-dashboard-admin.rbac.yaml

完成后查看主机是否起了31000端口,如果已启动,可通过ip:31000打开 K8S可视化页面

6.master节点初始化失败,需要清理重新部署

代码语言:javascript
复制
#重置kubernetes服务,重置网络,删除网络配置
kubeadm reset
systemctl stop kubelet 
systemctl stop docker 
rm -rf /var/lib/cni/
rm -rf /var/lib/kubelet/* rm -rf /etc/cni/ ifconfig cni0 down ifconfig flannel.1 down ifconfig docker0 down ip link delete cni0 ip link delete flannel.1 systemctl start docker 

tab快捷键安装

代码语言:javascript
复制
yum -y  install bash-completion && source /usr/share/bash-completion/bash_completion && source <(kubectl completion bash) && echo "source <(kubectl completion bash)" >> ~/.bashrc

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101899.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年5月3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档