K8S系列(一)-kubeadm部署

7 篇文章 1 订阅
6 篇文章 0 订阅

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.希望本文能帮到大家,如有不对的地方欢迎指正
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值