文章目录
导读:k8s 的出现,是解决了什么市场痛点?
环境准备
1、准备机器
2、升级内核
3、安装模块
4、系统设置
5、配置主机名解析
6、设置 ipv4 转发
7、时间同步
8、安装依赖软件包
9、SSH免密登录
10、系统使能
11、安装 docker
12、安装Kubernetes组件
13、准备集群镜像
集群初始化
master 节点
node 节点
安装网络插件
导读:k8s 的出现,是解决了什么市场痛点?
互联网早期,企业将服务直接部署在物理机上;后来由于一系列变化,经历了虚拟化部署,开始了 容器部署之路,Docker 无疑是其中的佼佼者。
在这里插入图片描述
但是,容器化部署方式也会出现一些问题,比如说:
一个容器故障停机了,怎么样让另外一个容器立刻启动去替补停机的容器?
当并发访问量变大的时候,怎么样做到横向扩展容器数量?
当并发访问量下降的时候,怎么样去做到动态的缩容?
1
2
3
人工介入,手动操作吗?开什么玩笑啊?
这些容器管理的问题统称为容器编排问题,为了解决这些容器编排问题,就产生了一些容器编排的软件,软件有很多,不过 k8s 背靠谷歌,脱颖而出。
k8s 主要提供以下服务:
(1)自动装箱:基于容器对应用运行环境的资源配置要求自动部署应用容器
(2)自我修复(自愈能力):当容器失败时,会对容器进行重启。当所部署的 Node 节点有问题时,会对容器进行重新部署和重新调度。当容器未通过监控检查时,会关闭此容器直到容器正常运行时,才会对外提供服务
(3)水平扩展:通过简单的命令、用户 UI 界面或基于 CPU 等资源使用情况,对应用容器进行规模扩大或规模剪裁
(4)服务发现:服务可以通过自动发现的形式找到它所依赖的服务。
(5)滚动更新:可以根据应用的变化,对应用容器运行的应用,进行一次性或批量式更新。
(6)版本回退:可以根据应用部署情况,对应用容器运行的应用,进行历史版本即时回退
(6)密钥和配置管理:在不需要重新构建镜像的情况下,可以部署和更新密钥和应用配置,类似热部署。
(7)存储编排:自动实现存储系统挂载及应用,特别对有状态应用实现数据持久化非常重要。存储系统可以来自于本地目录、网络存储(NFS、Gluster、Ceph 等)、公共云存储服务
(8)批处理:提供一次性任务,定时任务;满足批量数据处理和分析的场景。
(9)负载均衡:如果一个服务起动了多个容器,能够自动实现请求的负载均衡。
1
2
3
4
5
6
7
8
9
10
环境准备
注:以下操作如未说明,即为在所有机器上执行。
注:安装过程中遇到问题可以在后台回复 “咨询“,我来看报错日志、
1、准备机器
Kubernetes集群大致分为两类:一主多从和多主多从(这里的主从指的是 master 管理节点和 node工作节点)。
一主多从:一个Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境。
多主多从:多台Master和多台Node节点,搭建麻烦,安全性高,适合用于生产环境。
我们选择安装一个 master 的集群。至于 node 数量可根据个人实际情况设定。
角色 IP地址 操作系统 配置
Master 自行记录 CentOS7.8+, 4核CPU,4G内存,100G硬盘
Node1 自行记录 CentOS7.8+, 4核CPU,4G内存,100G硬盘
Node2 自行记录 CentOS7.8+, 4核CPU,4G内存,100G硬盘
这里建议配置成静态 IP,动态 IP 飘了的话挺麻烦的:【问题解决】虚拟机配置静态ip
这里有一个注意事项:建议不要修改分配给你的 IP 地址,因为如果你修改了网段,会出现连不上网的情况。
2、升级内核
在低版本的内核中会出现一些很让人恼火的Bug,时不时来一下,发作时候会导致整个OS无法执行任何命令。
(当然,对于学习者来说差别不大,学习的过程中免不了反反复复的重装集群…)
在所有虚拟机上进行操作
更新yum源仓库
yum update -y
导入ELRepo仓库的公共密钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装ELRepo仓库的yum源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
查看可用的系统内核包
[root@vm01 ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
- elrepo-kernel: ftp.yz.yamagata-u.ac.jp
Available Packages
elrepo-release.noarch 7.0-5.el7.elrepo elrepo-kernel
...
安装最新版本内核
yum --enablerepo=elrepo-kernel install -y kernel-ml
查看系统上的所有可用内核
sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
设置默认版本,其中 0 是上面查询出来的可用内核
grub2-set-default 0
生成 grub 配置文件
grub2-mkconfig -o /boot/grub2/grub.cfg
重启
reboot
删除旧内核(可选)
查看系统中全部的内核
rpm -qa | grep kernel
删除旧内核的 RPM 包,具体内容视上述命令的返回结果而定
yum remove kernel-3.10.0-514.el7.x86_64 \
kernel-tools-libs-3.10.0-862.11.6.el7.x86_64 \
kernel-tools-3.10.0-862.11.6.el7.x86_64 \
kernel-3.10.0-862.11.6.el7.x86_64
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
3、安装模块
在所有虚拟机上操作
[root@k8s-master ~]# modprobe -- ip_vs
[root@k8s-master ~]# modprobe -- ip_vs_rr
[root@k8s-master ~]# modprobe -- ip_vs_wrr
[root@k8s-master ~]# modprobe -- ip_vs_sh
[root@k8s-master ~]# modprobe -- nf_conntrack_ipv4
modprobe: FATAL: Module nf_conntrack_ipv4 not found.
[root@k8s-master ~]# lsmod | grep ip_vs
ip_vs_sh 16384 0
ip_vs_wrr 16384 0
ip_vs_rr 16384 0
ip_vs 159744 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack 159744 1 ip_vs
nf_defrag_ipv6 24576 2 nf_conntrack,ip_vs
libcrc32c 16384 3 nf_conntrack,xfs,ip_vs
[root@k8s-master ~]# lsmod | grep nf_conntrack_ipv4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
4、系统设置
关闭并停止防火墙,
systemctl stop firewalld && systemctl disable firewalld
禁用SELinux,让容器可以顺利地读取主机文件系统
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
关闭swap
swapoff -a
sed -ri 's/.swap./#&/' /etc/fstab
1
2
3
4
5
6
7
8
5、配置主机名解析
这个 ip 要根据个人实际情况填写。
cat >> /etc/hosts << EOF
192.168.190.147 k8s-master
192.168.190.148 k8s-node1
EOF
1
2
3
4
6、设置 ipv4 转发
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
1
2
3
4
5
6
7、时间同步
kubernetes要求集群中的节点时间必须精确一致,所以在每个节点上添加时间同步:
ntpdate time.windows.com
1
8、安装依赖软件包
yum install -y ipvsadm ipset sysstat conntrack libseccomp wget git
1
9、SSH免密登录
应该都会吧。
此步操作在Master主机上进行
[root@vm01 ~]# ssh-keygen -t rsa
...
配置公钥到其他节点,输入对方密码即可完成从master到node的免密访问
[root@vm01 ~]# ssh-copy-id k8s-node1
...
1
2
3
4
5
6
7
10、系统使能
sysctl -p
1
以上皆为版本无关的,接下来安装软件,就需要根据你选择的 k8s 版本而选择不同版本的软件了(指的是 Docker,kube 相关的和你的目的集群版本一致即可):
查看 k8s各版本 对应 各组件版本
11、安装 docker
1、切换镜像源
[root@master ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2、查看当前镜像源中支持的docker版本
[root@master ~]# yum list docker-ce --showduplicates
3、安装特定版本的docker-ce
必须指定--setopt=obsoletes=0,否则yum会自动安装更高版本
[root@master ~]# yum install --setopt=obsoletes=0 docker-ce-18.06.3-3.el7 -y
4、配置加速
tee /etc/docker/daemon.json <<-'EOF'
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://du3ia00u.mirror.aliyuncs.com"],
"live-restore": true,
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"},
"storage-driver": "overlay2"
}
EOF
systemctl daemon-reload
systemctl restart docker
5、启动dokcer
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl enable docker
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
12、安装Kubernetes组件
1、由于kubernetes的镜像在国外,速度比较慢,这里切换成国内的镜像源
2、编辑/etc/yum.repos.d/kubernetes.repo,添加下面的配置
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgchech=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
3、安装kubeadm、kubelet和kubectl
[root@master ~]# yum install --setopt=obsoletes=0 kubeadm-1.17.4-0 kubelet-1.17.4-0 kubectl-1.17.4-0 -y
4、配置kubelet的cgroup
编辑/etc/sysconfig/kubelet, 添加下面的配置
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
KUBE_PROXY_MODE="ipvs"
5、设置kubelet开机自启
[root@master ~]# systemctl enable kubelet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
13、准备集群镜像
1、查看 k8s 需要的镜像列表:
kubeadm config images list
1
2、拉取所需镜像。这里直接来个脚本拉取吧:
(这里面的镜像版本根据个人情况进行替换)
images=(
kube-apiserver:v1.17.4
kube-controller-manager:v1.17.4
kube-scheduler:v1.17.4
kube-proxy:v1.17.4
pause:3.1
etcd:3.4.3-0
coredns:1.6.5
)
for imageName in ${images[@]};do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
加上执行权限,运行。
集群初始化
参数根据个人情况自行替换。
master 节点
kubeadm init \
--apiserver-advertise-address=192.168.190.141 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.17.4 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16
1
2
3
4
5
6
上面这个命令只在 master 节点运行。
在这里插入图片描述
到这一步呀,基本也就差不多了,接下来得趁热打铁,因为这里面的数据要用,且有保质期的。
先按里面说的,先把这些信息给补上:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
1
2
3
node 节点
然后把最底下那串信息再看看,去 node 上执行一下,然后一步步按指引走,会看到:
在这里插入图片描述
kubeadm join 192.168.190.141:6443 --token d4dppl.t9zslzkvedzu7u36 \
--discovery-token-ca-cert-hash sha256:5f103e789f974027ff4d188e48b613a6911198942ae7efc9c73b401b7bdd6253
1
2
安装网络插件
kubernetes支持多种网络插件,比如flannel、calico、canal等,任选一种即可,推荐 calico。
后台回复"网络插件"获取 calico.yaml,网上不好找。
下载完之后放到 master 节点中,进入相应目录,
kubectl apply -f calico.yaml
1
让子弹飞一会儿、
在这里插入图片描述
一定要等到它们都 running 了。当然如果没法 running,私信我,我来看日志。
其实能 kubectl 执行命令,接下来就可以往下走了。
云原生私教
微信公众号
每日分享云原生学习路线、云原生前沿资讯等
看,未来
3
1
5
专栏目录
Jenkins 持续集成十六(基于 K8S 构建 Jenkins 持续集成平台一)
shenyuanhaojie的博客
523
文章目录一、Jenkins 的 Master-Slave 分布式构建1. 什么是 Master-Slave 分布式构建2. 如何实现 Master-Slave 分布式构建2.1 开启代理程序的 TCP 端口2.2 新建节点2.3 slave1 操作2.4 自由风格项目测试2.5 流水线项目测试二、K8S 实现 Master-Slave 分布式构建方案1. 传统 Jenkins 的 Master-Slave 方案的缺陷2. Kubernates 简介3. K8S + Docker + Jenkins 持续集成
使用kubeadm安装k8s集群
qq_34434565的博客
188
使用kubeadm安装k8s集群 1.服务器要求 建议最小硬件配置:2核/2G/20G 网络需求:最好能访问外网,需要拉取一些必要的镜像;若没有网络条件,需要提前导入必要的镜像 2.kubeadm常用工具功能: • kubeadm init:初始化一个Master节点 • kubeadm join:将工作节点加入集群 • kubeadm upgrade:升级K8s版本 • kubeadm token:管理 kubeadm join 使用的令牌 • kubeadm reset:清空 kubeadm ini
表情包
表情包
weixin_70222724
weixin_70222724
2022.07.07
[取消点赞] 1
好文章,已经收藏到我的站点,感谢作者!
kubeadm方式安装k8s集群
a13568hki的博客
710
部署单master集群 一、集群规划 k8s-master1 10.0.19.127 k8s-node1 10.0.19.128 k8s-node2 10.0.19.129 k8s版本:1.16 安装方式:离线-二进制 操作系统版本:7.7 二、初始化服务器 1 关闭防火墙 【所有主节点都执行】 [root@k8s-master1 ~]# systemctl stop firewalld [root@k8s-master1 ~]# systemctl disable firewall
使用kubeadm安装kubernetes(k8s)集群
qq_39612519的博客
114
一、环境准备 这里使用三台服务器进行搭建,具体信息如下:
Kubeadm 快速搭建 k8s 集群
shenyuanhaojie的博客
141
文章目录1. 实验准备2. 安装 docker(三个节点)3. 配置阿里云 K8S repo 源(三个节点)4. 安装 kubeadm,kubelet,kubectl(三个节点)5. 部署 kubernetes Master 节点(master 节点上执行)6. k8s-node 节点加入 master 节点(两个 node 执行)7. 安装 Pod 网络插件(CNI 插件,master 节点)8. master 节点安装可视化管理界面 dashboard 1. 实验准备 三台机 192.168.1
Kubeadm 快速搭建 k8s 集群&&安装可视化管理界面
不要因为走的太远而忘了为什么出发
454
文章目录1. 实验准备2. 安装 docker3. 配置阿里云 K8S repo 源(三个节点)4. 安装 kubeadm,kubelet,kubectl(三个节点)5. 部署 kubernetes Master 节点(master 节点上执行)6. k8s-node 节点加入 master 节点(两个 node 执行)7. 安装 Pod 网络插件(CNI 插件,master 节点)8. master 节点安装可视化管理界面 dashboard 1. 实验准备 三台服务器 192.168.8.12 m
kubeadm安装K8S单master双节点集群
weixin_34257076的博客
395
宿主机:master:172.16.40.97node1:172.16.40.98node2:172.16.40.99 # 一、k8s初始化环境:(三台宿主机) 关闭防火墙和selinux systemctl stop firewalld && systemctl disable firewalld sed -ri '/^1*SELINUX=/s#=.+$#=di...
kubernetes---CentOS7使用KubeOperator安装k8s图文完整版
直到世界的尽头
3218
KubeOperator简介 KubeOperator与Kubeadm、kops的区别 我们在之前的文章中已经使用Kubeadm安装过k8s: kubernetes—CentOS7安装kubernetes1.11.2图文完整版 Kubeadm是Kubernetes官方推出的快速部署Kubernetes的集群工具,其思路是将Kubernetes相关服务容器化以简化部署。 安装k8s集群的工具有很多:Kubeadm,Kops,KubeOperator 和 RKE(Rancher)等。 实际上它们 是 适合不同场
kubernetes部署一(采用kubeadm方式,使用固定版本安装)
m0_46400538的博客
682
1、基本准备 使用VMware安装Centos7,选择基础设施服务。 2、主机准备 节点 IP地址 master 192.168.2.100 node1 192.168.2.101 node2 192.168.2.102 3、环境初始化 在所有节点中执行 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 关闭selinux sed -i 's/enforcing/disabled
从零开始通过kubeadm安装k8s集群
keyan的岁月阁
178
从零开始通过kubeadm安装k8s集群 各节点做免密登录 关掉selinux,关掉firewalld 关闭swap分区 swapoff -a 更改内核参数,开启流量转发 modprobe br_netfilter echo "modprobe br_netfilter" >> /etc/profile vim /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-ipt
Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)
最新发布
qq_32748105的博客
253
概述: 这篇文章是为了介绍使用kubeadm安装Kubernetes集群(可以用于生产级别)。使用了Centos 7系统。 PS: 篇幅有点长,但是比较详细、比较全面。(请注意文章最后分享的word文档,可以解决DNS的问题) 一、Centos7 配置说明 1.1 Firewalld(防火墙) CentOS Linux 7 默认开起来防火墙服务(firewalld),而Kubernetes的Master与工作Node之间会有大量的网络通信,安全的做法是在防火墙上配置Kberne...
K8S集群搭建记录
Arabira的博客
357
K8S集群搭建记录 前期准备工作 首先,需要准备至少2台机器(1主1从),虚拟机也可以,但是必须保证是Linux系统,windows虽然也可以,但部署成本及其高昂。推荐部署使用Centos系统,本记录基于Centos 7系统进行作业。 一般要求master节点为4核,内存够用就行;node节点为4核,但内存要够大,因为需要承载业务。本次记录使用的master配置为4核4G 硬盘16G,node节点为4核6G 硬盘32G step1 服务器基本环境部署 1,安装Centos 7 系统,安装步骤参考网上各类
k8s---adm构建
白雪滑落树梢
849
文章目录
超11万字整理完k8s的核心组件pod全部功能详解,理论代码超详细,建议跟着做一遍实验【含 label 标签使用】【2】
崔崇鑫的博客,你linux/云运维工作中的百科全书。
147
文章目录说明【必看】第一篇文章标题和链接第三篇文章标题和链接静态pod【node节点操作】说明配置文件路径获取方式默认路径创建静态pod默认路径查看默认命名空间创建【default】指定命名空间创建pod自定义路径创建静态pod路径添加默认命名空间创建【default】指定命名空间创建pod特别说明【master上不能修改】删除静态pod调度pod说明调度过程调度的三个对象待调度Pod列表可用node列表调度算法主机过滤主机打分手动指定POD运行节点方式一 【nodeName创建】【建议】方式二【通过标签指
K8S学习笔记之二进制部署Kubernetes v1.13.4 高可用集群
dengxiangbao3167的博客
373
0x00 概述 本次采用二进制文件方式部署,本文过程写成了更详细更多可选方案的ansible部署方案https://github.com/zhangguanzhang/Kubernetes-ansible和之前的步骤差不多都是和kubeadm步骤一样,不过这次所有kubelet全部走bootstrap不会像之前master上的kubelet生成证书,另外证书换成openssl生...
Jenkins 持续集成十七(基于 K8S 构建 Jenkins 持续集成平台一)
LlZzSss的博客
94
目录一、Jenkins 的 Master-Slave 分布式构建1. 什么是 Master-Slave 分布式构建2. 如何实现 Master-Slave 分布式构建2.1 开启代理程序的 TCP 端口2.2 新建节点2.3 slave1 操作2.4 自由风格项目测试2.5 流水线项目测试二、K8S 实现 Master-Slave 分布式构建方案1. 传统 Jenkins 的 Master-Slave 方案的缺陷2.K8S + Docker + Jenkins 持续集成架构图![请添加图片描述](https
Kubenetes 1.13.5 集群源码安装
i4t abcdocker的博客
1146
Kubenetes 1.13.5 集群源码安装 标签(空格分隔): k8s 2019年06月13日 本文截选https://k.i4t.com 更多k8s内容请持续关注https://i4t.com 一、K8s简介 在1.11安装的地方已经讲过了,简单的查看K8s原理可以通过k8s 1.11源码安装查看,或者通过https://k.i4t.com查看更深入的原理 二、K8s环境准备 本次安装版...
centos7 kubernetes 集群部署
JakeLin's Blog
545
centos 7 kubernetes 集群部署 主机(虚拟机)信息: [root@k8s-master ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) 节点名称 IP k8s-master 192.168.1.86 k8s-node1 192.168.1.87 注: 1、k8s版本可...
二进制部署Kubernetes v1.13.4 HA可选
weixin_34111790的博客
408
本次采用二进制文件方式部署,本文过程写成了更详细的ansible部署方案https://github.com/zhangguanzhang/Kubernetes-ansible 和之前的步骤差不多都是和
————————————————
版权声明:本文为CSDN博主「看,未来」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43762191/article/details/125650315
- # ↩