IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> K8S系列(一)-kubeadm部署 -> 正文阅读

[系统运维]K8S系列(一)-kubeadm部署

K8S系列(一)kubeadm部署

一、 介绍

1. 对于k8s这个东西的介绍,博主不在这里做过多的赘述,因为比博主解释的清楚的博客到处都是.
2. 大概总结一下就是:
    它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
3. 能达到的效果:
    快速部署/回滚
    自动弹性伸缩
    滚动升级        
4. k8s能非常方便的帮助我们管理微服务集群,是我们开发和运维必备的一项知识
5. 所以博主也就不多说理论了,理论知识清查看其他更专业的博客
6. 博主会基于kubeadm(官方社区推出的一个用于快速部署kubernetes集群的工具)和二进制包的两种方式
	来对咱们的k8s做一个部署搭建
7. 本文会以kubeadm的方式来部署

二、 准备工作(每台机器都需要)

  1. 机器准备
角色ip主机名
master192.168.3.4hostnamectl set-hostname master
node1192.168.3.5hostnamectl set-hostname node1
node2192.168.3.6hostnamectl set-hostname node2
node3192.168.3.7hostnamectl set-hostname node3
  1. 关闭防火墙
    2.1 systemctl stop firewalld
    2.2 systemctl disable firewalld

  2. 关闭selinux(建议永久)
    3.1 sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
    3.2 setenforce 0 #临时

  3. 关闭swap(建议永久)
    4.1 sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
    4.2 swapoff -a # 临时

  4. 对应上面表格,将hostname设置一下

  5. 本地host添加映射

cat >> /etc/hosts << EOF
192.168.3.4 master
192.168.3.5 node1
192.168.3.6 node2
192.168.3.7 node3
EOF
  1. 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system # 生效

  1. 时间同步一下
    8.1 yum install -y ntpdate
    8.2 ntpdate time.windows.com #生效

三、 部署

  1. 安装Docker(所有节点)
1.wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
  -O /etc/yum.repos.d/docker-ce.repo
2.yum -y install docker-ce-18.06.1.ce-3.el7
3.systemctl enable docker
4.systemctl start docker
5.docker --version # 如有docker版本信息打印出来,则表示docker安装成功
6.cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": ["https://xxxxxxxx"]
}
EOF  #切换镜像源
7.systemctl restart docker #重启docker
  1. 添加阿里云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
  1. 安装kubeadm,kubelet和kubectl(所有节点)
1.yum install -y kubelet-1.18.0
2.yum install -y kubeadm-1.18.0
3.yum install -y kubectl-1.18.0
4.systemctl enable kubelet
  1. 部署Master
4.1 执行下面命令来初始化
kubeadm init
--apiserver-advertise-address=192.168.3.4 # 这个是master的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 #这个可以通用

4.2 看下图,根据提示可以看到初始化成功的字样.
4.3 按照提示进行以下指令操作来初始化我们的集群
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

4.4 将下面图的最后一个红色框框的内容,分别在其他的node节点执行,此操作是将其他node节点加入到当前集群.
	 ******注意*********
	 默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:
	 kubeadm token create --print-join-command
4.5 kubectl get nodes #查看集群节点状态,当前查看都是NotReady状态,此时我们还需要继续进行网络插件配置

(下面图是上面4.2图)
在这里插入图片描述
(下面图是上面4.5图)
在这里插入图片描述

  1. 部署Flannal网络插件.目的是为集群中的所有节点创建一个新的网卡,让不同节点的docker网卡都在同一个里面(master节点)
5.1 wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml #下载文件
5.2 kubectl apply -f kube-flannel.yml #应用
5.3 kubectl get nodes #查看集群节点状态,此时节点已经全部ready了

(下面是上方5.3的图)

在这里插入图片描述

  1. 到这一步,咱们已经是基于kubeadm将集群完整的搭建完了.下一步咱们会部署一个nginx来测试一下
6.1 编写nginx的deploment-yaml文件
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
 replicas: 3
 selector:
  matchLabels:
   app: nginx-deployment
 template:
  metadata:
   labels:
    app: nginx-deployment
  spec:
   containers:
   - name: nginx-deployment
     image: nginx
     ports:
     - containerPort: 80

6.2 kubectl apply -f xxx.yaml #执行此命令会起3个nginx的负载,如下图.但是目前还不能提供服务,因为
	我们还需要配置一下svc,把端口暴露出去

6.3 编写svc文件
apiVersion: v1
kind: Service
metadata:
  name: nginxsvc
spec:
  type: NodePort
  selector:
    app: nginx-deployment
  ports:
     - port: 80
       nodePort: 30000
       targetPort: 80

6.4 执行 kubectl create -f xxxx.yaml #生成svc
6.5 执行 kubectl get pods,svc #发现下方的svc多出了一个我们自己创建的

(下面是上方6.2)

在这里插入图片描述

(下面是上方6.5)
在这里插入图片描述

  1. 访问 http://192.168.3.4:30000会发现 nginx正常运行了

在这里插入图片描述

四、总结

1.按照以上步骤,咱们已经完整的搭建了一个基于kubeadm的k8s集群.并且已经完成了测试
2.但是这个并不是完全体,细心的朋友会发现,咱们的[master]节点目前存在单点问题,没有做高可用
3.这个稍微要麻烦一下,博主后面再抽空发一篇针对高可用的部署.
4.毕竟博主只是个后端开发,并不是运维人员,生产上的部署肯定不会让博主来处理的.
5.但是对于咱们后端开发来说,可以不要你部署,但是流程你要知道.
6.希望本文能帮到大家,如有不对的地方欢迎指正
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 12:07:58  更:2021-08-16 12:08:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:30:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码