全程无坑手撸k8s集群
主机规划
10.210.13.4 istio-master
10.210.13.43 istio-node1
10.210.13.12 istio-node2
安装操作系统
CentOS Linux release 7.6.1810 (Core)
使用命令查看操作系统版本
cat /etc/redhat-release
如果你是云主机直接选择对应版本即可。涉及组件较多,可能版本上的偏差会出现不确定性问题
设置域名
vi /etc/hosts
黏贴以下内容,每台机器都指定,host配置与hostname没有必然关系,设置成一致为了习惯以及避免一些相关性问题。
10.210.13.4 istio-master
10.210.13.43 istio-node1
10.210.13.12 istio-node2
设置hostname
在各自对应主机上执行,然后退出终端重新进入,就会发现hostname已变更
hostnamectl set-hostname istio-master
hostnamectl set-hostname istio-node1
hostnamectl set-hostname istio-node2
docker环境搭建
docker安装相对而言比较简单,先卸载本机上得docker
以下是不同情况下的查找和卸载
- 使用yum 安装得,使用如下命令查看和卸载
yum list installed|grep docker yum remove docker-xxxx
- 自行安装,如果有运行,使用
ps -ef|grep docker|grep -v grep
查看命令路径 - 如果没有启动直接 whereis docker
- 最后还可以暴力查找 find / -name “docker”
暴力删除docker相关的内容
find / -type d -name "*docker*" -exec rm -rf {} \;
发现大量docker0文件无法删除
删除docker0虚拟网卡数据
下线docker0网卡
ifconfig docker0 down
安装bridge-utils
yum -y install bridge-utils
删除docker0 (bridgectl delete bridge docker0)
brctl delbr docker0
再次执行find 命令查找docker 发现完全卸载干净了
find / -name "*docker*"
当然如果你的机器很干净,也可以稍微检查下有可能有些镜像自带集成了docker,但是版本较旧或者过新都可能不稳定
所以我们选择一些稳定版本避免踩别人踩过的坑,当然踩坑也是一种学习的过程。
18.09.9
这个是目前各大云厂商踩完的坑验证的较为稳定的版本
接下来我们打开docker官方文档 docker docs
按照官方文档的步骤来安装,官方有各种系统的安装方式,我们使用centos
添加yum相关工具用于添加docker-ce.repo
sudo yum install -y yum-utils
sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
查看repo
cat /etc/yum.repos.d/docker-ce.repo
替换docker源为清华镜像站,替换完可以再次查看确认
sed -i s@download.docker.com@mirrors.tuna.tsinghua.edu.cn/docker-ce@g /etc/yum.repos.d/docker-ce.repo
更新yum缓存,不要执行 yum update 会更新系统内核
yum -y makecache fast
安装对应版本docker-ce-18.09.9
yum -y install docker-ce-18.09.9
安装完成启动docker,添加开机启动
systemctl start docker
systemctl enable docker
更改镜像仓库为阿里云
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
重载配置
systemctl daemon-reload
测试docker是否配置正确
docker run --rm alpine echo "hello docker"
输出hello docker 说明配置正常,docker安装完成
k8s环境搭建
主机规划中我们已经配置完host和hostname
所以我们直接开始安装k8s,打开官网kubectl安装
我们选择centos
配置kubernetes仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[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
EOF
需要修改仓库地址为阿里云,避免被墙,地址为mirrors.aliyuncs.com/kubernetes
修改仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyuncs.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyuncs.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyuncs.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
如果阿里不行也可以改为清华镜像站
sed -i 's@mirrors.aliyuncs.com@mirrors.tuna.tsinghua.edu.cn@g' kubernetes.repo
关闭并查看selinux
setenforce 0
cat /etc/sysconfig/selinux
如果配置文件中还是enforcing 需要改为disabled
安装k8s相关工具
- kubectl-1.19.16-0
- kubeadm-1.19.16-0
- kubelet-1.19.16-0
由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 所以添加 --nogpgcheck 不检查gpg
yum install -y --nogpgcheck kubectl-1.19.16-0 kubeadm-1.19.16-0 kubelet-1.19.16-0
安装完成查看安装的包
yum list installed |grep kube
启动kubelet
systemctl start kubelet
systemctl enable kubelet
关闭防火墙
关闭swap交换区
swapoff -a
sed -ri 's@(^/.*swap.*)@#\1@g' /etc/fstab
swapoff -a
#查看free -m
安装ip_vs ip虚拟服务器
直接安装
#查看 lsmod |grep ip_vs
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4
配置k8s.ipvs.conf文件
tee /etc/modules-load.d/k8s.ipvs.conf <<-'EOF'
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack_ipv4
EOF
开启iptables forward
我们用的是ip_vs方案但是这个还是开启来吧免得有问题
先查看
iptables -L -n
并修改docker执行后操作
iptables -P FORWARD ACCEPT
sed -i '/ExecStart/a ExecStartPost=/sbin/iptables -P FORWARD ACCEPT' /usr/lib/systemd/system/docker.service
systemctl daemon-reload
配置kubelet
tee /etc/sysconfig/kubelet <<-'EOF'
KUBELET_EXTRA_ARGS="--cgroup-driver=cgroupfs --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/google_containers/pause-amd64:3.1"
EOF
创建master节点
kubeadm init --apiserver-advertise-address=10.210.13.4 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.16 --pod-network-cidr=10.245.0.0/16
这里可能会报错,根据具体错误进行排查,我这边是之前机器安装过所有报了个etcd端口被占用错误。
根据提示配置.kube
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
测试kubectl
kubectl get nodes
此时状态为NotReady,说明配置问题。
根据提示添加节点
kubeadm join 10.210.13.4:6443 --token mxo6v4.6t26hvmnmzk179x6 \--discovery-token-ca-cert-hash sha256:3c61682bcd8e645bcb78ffe328a2cd1386b75ec4a21e35c2ea3a142240c32adf
查看pod
kubectl get pods -A
发现coreDns状态为pending
回到官网coredns pending state
告诉我们安装网络
配置网络
这里有非常多的解决方案
- ACI
- calico
- canal
- cilium
- CNI-Genie
- contiv
- contrail
- flannel
- knitter
- multus
- ovn-kubernetes
- ovn4NFV-k8s-plugin
- NSX-T
- Nuage
- Romana
- Weave Net
先选一个耳熟能详的吧,用Calico或者Flannel
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
这边直接使用网络的流文件,如果你需要修改网卡之类的需要将文件下载下来进行修改
查看安装情况
kubectl get pods -A
可以看到镜像拉取失败,没关系多等一会儿就好了
安装完成后
[root@istio-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
istio-master Ready master 10h v1.19.16
istio-node1 Ready <none> 25m v1.19.16
istio-node2 Ready <none> 25m v1.19.16
安装过程如果还遇到什么其它问题可以看看官方的避坑指南
- kubeadm避坑指南
- flannel避坑指南
- docker避坑指南
全程无坑手撸k8s集群相关推荐
- (亲测无坑)Centos7.x使用kubeadm安装K8s集群1.15.0版本
基础环境配置 三台Centos7.x的服务器,主节点 cpu >=2,node节点>=1 注:(上述cpu为最低配置,否则集群安装部署会报错,无法启动,对其他硬件无硬性要求) 以下操作若无 ...
- 牛批!简单几步,无坑部署最小化 K8S 集群
点击下方"民工哥技术之路",选择"设为星标" 回复"1024"获取独家整理的学习资料! 虽然网上有大量从零搭建 K8S 的文章,但大都针对老 ...
- 浅谈大规模k8s集群关于events的那些坑
浅谈大规模k8s集群关于events的那些坑 背景 一.用户通过kubectl list event 二.kubernetes-dashboard list events 三.直接在集群中list e ...
- 云服务器搭建k8s集群的巨坑,node间网络不通问题
最近用腾讯云服务器搭建了k8s集群,踩到一个巨坑.现象就是服务正常搭建完毕,各个必须的pod也处于ready状态,但是node不能访问别的node的pod.搭建的示例tomcat的demo也不能通过外 ...
- 万级K8s集群背后etcd稳定性及性能优化实践
作者:唐聪, 腾讯 CSIG 后台开发工程师 本文旨在帮助大家了解 etcd集群场景下稳定性与性能优化经验引的容量,避免给后面留坑. 背景与挑战 随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云 ...
- 工商银行:应用多k8s集群管理及容灾实践
摘要:在华为开发者大会(Cloud)2021上,工商银行Paas云平台架构师沈一帆发表了<工商银行多k8s集群管理及容灾实践>主题演讲,分享了工商银行使用多云容器编排引擎Karmada的落 ...
- 记一次在K8s集群搭建的MySQL主从无法正常启动之数据迁移恢复实践
本章目录:记一次在K8s集群搭建的MySQL主从无法正常启动之数据迁移恢复实践 描述:在K8s集群中里利用bitnami提供的mysql:5.7.32-debian-10-r61镜像并利用helm进行 ...
- 手把手教你在centos7安装k8s集群
最近在整理回顾k8s相关的知识,实操手动去搭建一个简易的k8s集群环境(作者本人搭建的是k8s集群version v1.23.3),花了挺多时间,踩了不少坑.不过最终还是把环境跑起来了,大家按照我的方 ...
- 实战:kubeadm方式搭建k8s集群(k8s-v1.22.2,containerd-v1.5.5)-2023.2.22(测试成功)
实验环境 1.硬件环境 3台虚机 2c2g,20g.(nat模式,可访问外网) 角色 主机名 ip master节点 master1 172.29.9.51 node节点 node1 172.29.9 ...
最新文章
- jQuery中deferred对象的使用(二)
- python画切片图_python切片操作
- 5g网络架构_【5G网络架构】系列之二:5G基站—gNodeB。为什么叫gNodeB?取个名而已,需要理由吗?...
- 使用Keras和TensorFlow构建深度自动编码器
- jio文件 久其_功能强大的Windows文件管理器工具
- 2.04 对字母数字的混合排序
- python读音有道-python爬虫之有道在线翻译
- 基本的阿里云Linux服务器设置
- Atitit 语音识别的技术原理
- 计算机常用算法对照表整理
- Redis可视化工具
- WebRoot 与 WEB-INF 相关问题学习整理
- 晶振及其内部电路详解:
- 电脑qq聊天记录迁移--备份与恢复
- java 加密与解密算法,简单地加密和解密算法(java实现)
- Monkey工具详解
- 收藏级干货——Auto CAD历史版本功能大盘点(下)
- word-wrap控制长单词或URL地址换行
- 密集人群计数 密度图回归 原理
- 这一波再抢不到微信红包封面,就只能怪你自己了
热门文章
- 「群体遗传学实战」第一课: 对SNP位点进行注释
- 拉普拉斯-Laplacian
- 【SQL Server】模糊查询
- 学会这几点,不懂代码也能做出炫酷可视化大屏!
- Universal DEP/ASLR bypass with msvcr71.dll and mona.py
- IDEA 返回上一步,回到下一步 冲突 快捷键设置
- java 浏览器 qq_qq浏览器通用版 手机QQ浏览器v2.1Java通用版下载
- Dolby技术汇总(二) --- Dolby Mobile
- linux系统性能监控--内存利用率
- 【机器学习 - 8】:随机梯度下降法