前端时间在研究k8s+jenkins+harbor环境搭建,在此把搭建过程分享一下。

我只想介绍K8s集群的搭建。

配置说明  四台虚拟机 IP地址为 71,72,73,74

71、74为Master节点  72,73为node节点  好了下边开始搭建了

初始化环境

1、修改hostname 四个服务器分别为k8smaster1 k8smaster2 k8snode1 k8snode2

hostnamectl set-hostname 主机名
vim /etc/hostname 修改名称hostname 主机名

2、关闭防火墙

[root@XXX ~]# systemctl stop firewalld
[root@XXX ~]# systemctl disable firewalld
# 确认是否运行
[root@XXX ~]# firewall-cmd --state not running

3、关闭Seliunx

[root@XXX ~]# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
[root@master local]# cat /etc/selinux/config # This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

4、设置集群时间同步

#修改时区
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
vim /etc/sysconfig/clock
ZONE="Asia/Shanghai"
UTC=false
ARC=false#安装并设置开机自启
yum install -y ntp
systemctl start ntpd
systemctl enable ntpd#配置开机启动校验
vim /etc/rc.d/rc.local
/usr/sbin/ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w#配置定时任务
crontab -e
0 */1 * * * ntpdate ntp1.aliyun.com > /dev/null 2>&1; /sbin/hwclock -w

5、关闭swap分区

打开编辑并注释掉相关内容
[root@node2 local]# vim /etc/fstab
# /etc/fstab
# Created by anaconda on Wed Sep 16 18:50:24 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=71a3a2c7-1e60-4bc6-b641-8e82b3d1e79b /boot                   xfs     defaults        0 0
#/dev/mapper/centos-swap swap                    swap    defaults        0 0#保存,退出#使用命令查看,此时是还有的,因为没有重启
[root@node2 local]# free -mtotal        used        free      shared  buff/cache   available
Mem:           3770         138        3456          11         175        3421
Swap:          2047           0        2047# 重启
[root@node2 local]# reboot# 重启完毕后再次查看
[root@node1 ~]# free -mtotal        used        free      shared  buff/cache   available
Mem:           3770         134        3448          11         187        3419
Swap:             0           0           0

6、添加网桥过滤

# 添加网桥过滤及地址转发
[root@master ~]# vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0# 加载br_netfilter模块
[root@master ~]# modprobe br_netfilter
[root@master ~]# lsmod | grep br_netfilter
br_netfilter           22256  0
bridge                151336  1 br_netfilter# 加载网桥过滤配置文件
[root@master ~]# sysctl -p /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0

7、开启IPvs

# 安装ipset以及ipvsadm
[root@master ~]# yum -y install ipset ipvsadm#添加需要加载的模块(直接复制下面所有内容,粘贴到命令行中)
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF#验证一下
[root@master ~]# ll /etc/sysconfig/modules/
总用量 4
-rw-r--r-- 1 root root 130 11月  4 15:22 ipvs.modules# 修改权限
[root@master ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules #执行
[root@master ~]# sh /etc/sysconfig/modules/ipvs.modules#验证其中一个
[root@master ~]# lsmod | grep ip_vs_rr
ip_vs_rr               12600  0
ip_vs                 145497  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr

安装Docker-Ce

参照官网给出的安装步骤

#clear yum
$ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
#安装工具包
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
#安装docker
$ sudo yum install docker-ce docker-ce-cli containerd.io
$ yum list docker-ce --showduplicates | sort -rdocker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
$ sudo systemctl start docker
$ sudo systemctl enale docker
#测试
$ sudo docker run hello-world

部署软件及配置:

所有k8s集群节点均需安装,默认yum源是谷歌,可以使用阿里云yum

需求 kubeadm kubelet kubectl docker-ce
初始化集群、管理集群等,版本为:1.17.2 用于接收api-server指令,对pod生命周期进行管理,版本为:1.17.2 集群命令行管理工具,版本为:1.17.2 18.06.3
# 谷歌yum源
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum /repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg# 阿里云yum源
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg  https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg# 新建文件(每台机器)
[root@master ~]# vim /etc/yum.repos.d/k8s.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg  https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg:wq 保存退出# 检查yum源是否可用(每台机器)
[root@master ~]# yum list | grep kubeadm
导入 GPG key 0xA7317B0F:用户ID     : "Google Cloud Packages Automatic Signing Key <gc-team@google.com>"指纹       : d0bc 747f d8ca f711 7500 d6fa 3746 c208 a731 7b0f来自       : https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
y
kubeadm.x86_64                              1.19.3-0                   kubernetes# 安装
[root@master ~]# yum -y install kubeadm kubelet kubectl

主要配置kubelet,如果不配置可能会导致k8s集群无法启动

# 为了实现docker使用的cgroupdriver与kubelet使用的 cgroup的一致性,建议修改如下文件内容。
[root@XXX ~]# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"# 设置为开机启动,注意:这里千万不要去手动启动它,它的启动是由kubeadm初始化的时候启动
[root@master ~]# systemctl enable kubelet
Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kube
let.service.

初始化操作

kubeadm init   --kubernetes-version=v1.19.4     --apiserver-advertise-address=10.10.11.71  --control-plane-endpoint 10.10.11.71:6443 --image-repository registry.aliyuncs.com/google_containers     --pod-network-cidr=192.168.0.0/16 Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:kubeadm join 10.10.11.71:6443 --token c5arar.09aoifdbmbwykrc8 \--discovery-token-ca-cert-hash sha256:80fbd0fd738febd721d98f4881a19fbe6c5f74e044bed65ee4cac35fd1c1c815 \--control-plane Then you can join any number of worker nodes by running the following on each as root:kubeadm join 10.10.11.71:6443 --token c5arar.09aoifdbmbwykrc8 \--discovery-token-ca-cert-hash sha256:80fbd0fd738febd721d98f4881a19fbe6c5f74e044bed65ee4cac35fd1c1c815 

按照要求执行命令

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

配置Calico资源配置清单文件

cd /usr/local/k8s/reslist
kubectl apply -f calico.yamlkubectl get nodes 

添加第二个Master节点

scp root@10.10.11.71:/etc/kubernetes/pki/ca.* /etc/kubernetes/pki/
scp root@10.10.11.71:/etc/kubernetes/pki/sa.* /etc/kubernetes/pki/
scp root@10.10.11.71:/etc/kubernetes/pki/front-proxy-ca.* /etc/kubernetes/pki/
scp root@10.10.11.71:/etc/kubernetes/pki/etcd/ca.* /etc/kubernetes/pki/etcd/
scp root@10.10.11.71/etc/kubernetes/admin.conf /etc/kubernetes/kubeadm join 10.10.11.71:6443 --token c5arar.09aoifdbmbwykrc8 \--discovery-token-ca-cert-hash sha256:80fbd0fd738febd721d98f4881a19fbe6c5f74e044bed65ee4cac35fd1c1c815 \--control-plane 

添加Node节点

kubeadm join 10.10.11.71:6443 --token c5arar.09aoifdbmbwykrc8 \--discovery-token-ca-cert-hash sha256:80fbd0fd738febd721d98f4881a19fbe6c5f74e044bed65ee4cac35fd1c1c815 

kubernetes多节点集群搭建过程分析相关推荐

  1. flume多节点集群搭建

    概览 1.Flume流程简介 2.规划 3.配置 4.启动测试 5.注意 准备 操作系统:CentOS 7 搭建好hadoop集群 Flume版本:1.8.0 jdk版本:1.8.0_141 工具:X ...

  2. k8s双节点集群搭建详细教程

    K8S v1.13.0 集群搭建 环境 两台centos主机: Master:192.168.11.112 主机名:k8s-master Node:192.168.11.111 主机名:k8s-nod ...

  3. Redis 多机多节点集群搭建方案(5.0版本)

    >搭建环境: a)redis的安装包,redis-5.0.8.tar.gz b)gcc安装包gcc_rpm.tar.gz c)VM10 d)CentOS镜像文件 >搭建步骤: 1.准备工作 ...

  4. Kubernetes高可用集群搭建

    本文介绍搭建K8S集群的高可用,保证在主master节点挂掉之后,node节点的kubelet还能访问到另一个主节点的apiserver等组件进行运作. 实验部署 单master部署查照(Kubern ...

  5. 第一章、Kubernetes基础之集群搭建(二进制安装)

    集群安装 基本环境配置 10.103.236.201 k8s-master01 # 2C2G 40G 10.103.236.202 k8s-master02 # 2C2G 40G 10.103.236 ...

  6. RabbitMQ双节点集群搭建

    一 实验环境 二 安装步骤 2.1 安装单实例RabbitMQ 可参考:安装rabbitmq 3.7.6_雅冰石的专栏-CSDN博客 2.2 修改两台服务器的/etc/hosts文件 添加: 192. ...

  7. docker 如何加入kubernetes_使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群...

    什么是 Kind Kind(Kubernetes in Docker) 是一个Kubernetes孵化项目,Kind是一套开箱即用的Kubernetes环境搭建方案.顾名思义,就是将Kubernete ...

  8. 【K8S】 基于Kubernetes部署Kafka集群

    主要参考了https://stackoverflow.com/questions/44651219/kafka-deployment-on-minikube和https://github.com/ra ...

  9. 使用kubeadm安装kubernetes高可用集群

    kubeadm安装kubernetes高可用集群搭建  第一步:首先搭建etcd集群 yum install -y etcd 配置文件 /etc/etcd/etcd.confETCD_NAME=inf ...

  10. cassandra集群搭建中若干问题的解决

    至于如何搭建cassandra集群推荐一个链接,一步一步跟着做即可! 3节点集群搭建:cassandra3节点集群安装 - 简书 下面步入正题!!! 问题一:启动cassandra后遇到JDK错误 e ...

最新文章

  1. 为什么“不懂数据结构与算法”的程序员一定走不远?
  2. 【追寻javascript高手之路04】理解prototype
  3. DB性能调优之RAID比较
  4. Python动态网页爬虫技巧Selenium(一)
  5. 初试Ajax.Net !
  6. 【渝粤题库】国家开放大学2021春3894理工英语1题目
  7. android 移除fragment,Android Viewpager+Fragment取消预加载及Fragment方法的学习
  8. SDN 前提知识:关于东西南北向接口
  9. android 关于Uri.parse和uri.fromFile的区别
  10. java发送html附件_Java发送邮件(图片、附件、HTML)
  11. asp.net处理机制管道事件
  12. VGMP报文封装格式简介
  13. 一起talk C栗子吧(第二十七回:C语言实例--插入排序)
  14. GEF: 图形拖拽处理
  15. CoolFire系列讲座 第3讲:如何连接ISP并且对其解码
  16. 高端物理学名词_物理专业名词
  17. 六自由度机械臂参数化设计
  18. OpenJudge 1.6.4
  19. 北漂IT男返乡2年的三线楼市观察(宜昌夷陵篇)-原创
  20. c语言 continue什么意思,continue在C语言中什么意思?

热门文章

  1. 完全卸载Oracle方法(最简便最详细最快捷)
  2. duilib菜单动态添加
  3. 技术交底书在专利申请文件撰写中的功用
  4. 阅读《视音频编解码技术零基础学习方法-雷霄骅》摘要
  5. searchbar.wxss源代码
  6. Iometer存储测试工具参数说明-5 存储规格选项
  7. IDEA中JDBC连接MYSQL数据库步骤超详细总结
  8. Gson解析JSON数组
  9. vue实时获取当前时间
  10. 当前流行的PE系统最纯净、最轻量、最快捷