文章目录

  • 前言
  • 准备工作
  • 安装步骤
    • 设置主机名
    • 配置系统环境
    • 添加 hosts(主)
    • Docker安装
    • K8s组件安装
    • 集群初始化(主)
    • 工作节点加入集群(工)
    • 安装容器网络插件(主)
  • 测试
    • 等待集群Ready状态
    • 以Nginx为例作测试(主)
  • Rancher安装
  • 参考链接

前言

本文讲述在Linux内网搭建K8s集群详细步骤,解决搭建过程中的问题。

脚本基本可以不修改直接使用。

准备工作

需要Linux CentOS 7.x 两台及以上,本文用的 7.6。

主机要求有2个核心及以上。

安装步骤多个节点可以并行操作,默认所有操作各节点都要执行,某些操作仅主/工作节点执行在标题中有标注(主/工)。

部署成功后可以尝试使用 Kubesphere 或 Rancher 容器管理平台进行管理。

安装步骤

设置主机名

单独为每个服务器设置主机名,格式为hostnamectl set-hostname hostname。一般主节点取名master,从节点取名node.

echo "设置主节点主机名" > /dev/null
hostnamectl set-hostname k8s-master
echo "设置从节点主机名" > /dev/null
hostnamectl set-hostname k8s-node1

配置系统环境

echo "停止、关闭防火墙" > /dev/null
systemctl stop firewalld
systemctl disable firewalldecho "永久关闭SELinux" > /dev/null
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
echo  "临时关闭SELinux" > /dev/null
setenforce 0
echo "查看SELinux状态,显示为[SELinux status:                 disabled]视为设置成功" > /dev/null
sestatusecho "永久关闭Swap" > /dev/null
sed -ri 's/.*swap.*/#&/' /etc/fstab
echo "临时关闭Swap" > /dev/null
swapoff -aecho "安装、配置时间同步" > /dev/null
yum install ntpdate -y
ntpdate time.windows.comecho "创建/etc/sysctl.d/k8s.conf配置文件,将桥接的 IPv4 流量传递到 iptables 的链" > /dev/null
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

添加 hosts(主)

在主节点配置所有k8s服务器的host,并且host名字跟各服务器的主机名对应。这里配置的是公网IP。

# 追加host
cat >> /etc/hosts << EOF
<主节点IP> k8s-master
<工作节点IP> k8s-node1
EOFecho "使host配置生效" > /dev/null
/etc/init.d/network restart

Docker安装

echo "下载安装" > /dev/null
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7echo "设置开机启动并启动" > /dev/null
systemctl enable docker && systemctl start docker
echo "查看Docker版本" > /dev/null
docker --version

设置Docker仓库地址,这个地址是Docker镜像上传/下载源。这个地址可以是自己搭建的私有仓库Harbor,也可以考虑用阿里云等第三方仓库。

echo "创建/etc/docker/daemon.json配置文件并指定镜像仓库" > /dev/null
cat > /etc/docker/daemon.json << EOF
{"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
}
EOFecho "重启Docker使配置生效" > /dev/null
systemctl restart docker

K8s组件安装

添加yum源,并配置为阿里云源,国内下载更快。

echo "创建/etc/yum.repos.d/kubernetes.repo追加yum源配置" > /dev/null
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
EOFecho "安装Kubeadm、Kubelet、Kubectl" > /dev/null
yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
echo "设置开机启动" > /dev/null
systemctl enable kubelet

集群初始化(主)

通过kubeadm执行初始化,apiserver-advertise-address填主节点的IP。service-cidr是service网段。pod-network-cidr是Pod网段。

kubeadm init \
--apiserver-advertise-address=<IP> \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.18.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16

Kubectl设置。kubeadm初始化完成后,控制台会打印下面一模一样的指令,直接执行。

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

工作节点加入集群(工)

主节点通过kubeadm初始化成功后控制台会打印出join脚本,复制到从节点执行。

如果忘记了join脚本,可以在主节点执行以下命令重新生成。

kubeadm token create --print-join-command

安装容器网络插件(主)

容器网络插件CNI(Container Network Interface)这里使用的解决方案为Flannel。

需要插件的配置文件kube-flannel.yml,通过kubectl来应用配置,命令格式为kubectl apply -f加上本地路径或者链接。下面这个是我码云仓库里面的,可直接用。

kubectl apply -f https://gitee.com/www.freeclub.com/blog-images/raw/master/source/kube-flannel.yml

测试

等待集群Ready状态

查看集群节点,可以看到节点从NotReady到Ready的状态变更。等全部Ready再进行下一步测试。

kubectl get nodes

以Nginx为例作测试(主)

创建一个Service和Deployment。

echo "部署 nginx (deployment,pod)" > /dev/null
kubectl create deployment nginx --image=nginx
echo "暴露 nginx 端口给集群外部访问 (service)" > /dev/null
kubectl expose deployment nginx --port=80 --type=NodePort

执行下面指令可获取pod和service信息,可以看到NodePort类型的service在宿主机暴露了随机端口30879供集群外部访问。

访问链接如:http://IP:30879,IP为工作节点主机IP。

echo "获取 service deployment 和 pod 信息" > /dev/null
kubectl get svc,deployment,pod

删除测试的Nginx Service和Deployment

echo "删除nginx service" > /dev/null
kubectl delete service nginx
echo "删除nginx deployment" > /dev/null
kubectl delete deployment nginx

Rancher安装

Master 节点执行以下指令就行,官网有 快速开始 介绍。

Rancher 是一个容器管理平台,可以直接创建集群,也可以将原有集群添加进去交给它管理。通过UI界面创建集群中各个容器/组件非常方便。

安装好后通过 80/443 端口访问,云服务器记得开放这两个端口

sudo docker run --privileged -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

参考链接

iptables IP 重定向

Rancher 官网

在Linux内网搭建K8s集群相关推荐

  1. Linux云计算虚拟化-使用rancher搭建k8s集群并发布电商网站

    文章目录 Linux云计算虚拟化-使用Rancher搭建k8s集群并使用lnmp架构发布电商网站 1. Rancher介绍 2. 使用Rancher搭建k8s集群 2.1 实验环境介绍 2.2 在ra ...

  2. 纯手工搭建k8s集群-(二)核心模块部署

    1. 部署ETCD(主节点) 1.1 简介 kubernetes需要存储很多东西,像它本身的节点信息,组件信息,还有通过kubernetes运行的pod,deployment,service等等.都需 ...

  3. 搭建k8s集群完整流程,云服务器、虚拟机均可参考

    一.机器准备 本次搭建k8s集群采用三台云服务器,master节点最好采用2核2G以上的机器,node节点不作要求 二.开始搭建 1.机器 | 角色     | IP           | | -- ...

  4. linux下离线安装k8s集群1.19.4附带nfs存储(kubeadm方式)

    linux下离线安装k8s集群1.19.4附带nfs存储 活动地址:毕业季·进击的技术er  一,环境简介 kubernetes-1.19.4集群部署计划 序号 服务器配置 IP地址 操作系统 备注 ...

  5. 搭建K8s集群(二进制方式)-搭建步骤介绍

    使用二进制方式搭建K8S集群 注意 [暂时没有使用二进制方式搭建K8S集群,因此本章节内容不完整... 欢迎小伙伴能补充~] 准备工作 在开始之前,部署Kubernetes集群机器需要满足以下几个条件 ...

  6. 【运维开发】Mac OS(10.13.6)使用 vagrant+VirtualBox +centos7搭建k8s集群

    Mac OS(10.13.6)使用 vagrant+VirtualBox +centos7搭建k8s集群步骤 环境准备工作 下载VirtualBox 地址:https://www.virtualbox ...

  7. centos7中kubeadm方式搭建k8s集群(crio+calico)(k8s v1.21.0)

    文章目录 centos7中kubeadm方式搭建k8s集群(crio+calico)(k8s v1.21.0) 环境说明 注意事项及说明 1.版本兼容问题 2.镜像问题 安装步骤 安装要求 准备环境 ...

  8. 【云原生-K8s】kubeadm搭建k8s集群

    搭建K8s集群[无需科学上网] 官网:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kub ...

  9. 3.搭建K8s集群[无需ke学上网]

    01 搭建K8s集群[无需科学上网] 官网:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install- ...

最新文章

  1. 通往安全自动驾驶汽车的艰难道路
  2. LocalDateTime、OffsetDateTime、ZonedDateTime互转,这一篇绝对喂饱你
  3. windows mobile开发循序渐进(5)移动应用程序与webservice之间的数据交互
  4. 网络知识:分享几个路由器设置小技巧,欢迎收藏!
  5. Linux内核的Softirq机制
  6. GC算法-标记压缩算法
  7. 利用IIS建立高安全性Web服务器
  8. 公司来的新同事能力没我强,但是工资比我高,我应该提出加薪还是选择辞职?
  9. android 图片墙拼贴,三步搞定 用APP打造图片文字拼贴效果
  10. MYSQL数据库脱库写马写一句话
  11. NAND和NOR Flash的区别
  12. UEFI学习——使用gRT->GetVariable读取Setup选项值
  13. MapServer教程
  14. CSS3颜色渐变整理
  15. 人事电子档案管理系统服务器,浪潮为北京市档案馆 打造智能档案管理系统
  16. CTF WEB WP杂谈
  17. c语言志愿者信息管理系统,基于C/S架构的青年志愿者管理系统
  18. 计算机毕业设计(80)php小程序毕设作品之视频播放电影小程序系统
  19. gromacs 安装_GROMACS安装专述
  20. 未来人工智能产品的思维,主要有哪几个趋势

热门文章

  1. AIX的KSH切换到BASH
  2. UG10.0 win10安装问题 This application has unexpectly quit.
  3. qt如何去掉文件路径最后一个反斜杠的内容
  4. Kibana:运用 Lens 创建数据透视表格
  5. NOIP初赛准备:第6课时
  6. NOIP2017搞机记
  7. matlab 李萨如_毕业论文 - 基于MATLAB的李萨如图形研究
  8. 地铁三号线 - 幸福的长发男子
  9. Jenkins基础:Jenkinsfile使用实例:13:使用push命令进行镜像推送
  10. 利用PyUserInput记录键盘鼠标事件信息