当前位置:网站首页>Kubeadm搭建kubernetes集群
Kubeadm搭建kubernetes集群
2022-07-28 19:37:00 【Sq夏颜】
一.集群介绍
1.1 集群搭建方法
目前生产部署Kubernetes 集群主要有两种方式:
- Kubeadm
Kubeadm是一个K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署Kubernetes 集群。 - 二进制包
从github 下载发行版的二进制包,手动部署每个组件,组成Kubernetes 集群。
Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。
1.2 集群架构
目前搭建集群一般采取一主一从、多主多从的集群架构(高可用)
二. 集群部署
本文使用一主两从,共三台服务器搭建k8s集群
2.1 环境配置
三台服务器都需如下操作
- 关闭swap
#临时关闭 swapoff -a
#永久关闭,需要重启
sed -i 's/.*swap.*/#&/' /etc/fstab
#查看,swap必须为0
free -g

- 添加主机映射
echo "192.168.48.14 k8s" >>/etc/hosts
echo "192.168.48.13 k8s-node1" >>/etc/hosts
echo "192.168.48.11 k8s-node2" >>/etc/hosts

- 将桥接的 IPv4 流量传递到 iptables 的链
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 EOF
#刷新
sysctl --system
- docker安装
#关闭防火墙与selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
#配置阿里源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装docker
yum install -y docker-ce
systemctl start docker
systemctl enable docker
#修改docker资源管理
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
systemctl restart docker
- 配置K8s源
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
#安装软件
yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3
systemctl enable kubelet
systemctl start kubelet
2.2 master节点制作
在master主服务器操作,进行集群初始化,注意按实际更改自己的ip信息
kubeadm init --apiserver-advertise-address=192.168.48.14 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.21.3 --service-cidr=10.125.0.0/16 --pod-network-cidr=10.150.0.0/16

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
ps:加入集群的命令中的token==有效期为24小时==,若过期,需要重新申请token
#生成token
kubeadm token create
#查看token
kubeadm token list | awk -F" " '{print $1}'
#获取CA公钥的hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^ .* //'

2.3 node节点加入集群
kubeadm join 192.168.48.14:6443 --token brc1q1.tnuas794b21c6l7a \
--discovery-token-ca-cert-hash sha256:c3b8b3b770b60af4bc884b4034cc9ab922ae49700f41628b83a25b651e72111d

2.4 添加网络插件
######################网络添加############################
#添加
kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#删除
kubectl delete -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
######################weget下载##########################
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#更改配置文件
vim kube-flannel.yml
#将IP更改为master节点制作时的IP地址
84 "Network": "10.150.0.0/16"
#添加插件
kubectl apply -f + kube-flannel.yml的路径

给node添加标签
kubectl label node k8s-node1 node-role.kubernetes.io/node=node
kubectl label node k8s-node2 node-role.kubernetes.io/node=node
#获取节点信息
kubectl get nodes

master检查
#查询master是否正常
kubectl get cs
#若为unhealthy
vim /etc/kubernetes/manifests/kube-scheduler.yaml
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
- --port=0 #注释掉,每个文件均有一行
kube-controller-manager.yaml文件修改:注释掉27行
kube-scheduler.yaml配置修改:注释掉19行,- --port=0
2.5 服务部署
检测K8s集群是否正常后,再运行服务部署
#查询所有pod是否正常运行
kubectl get pods -A
#查询master是否正常
kubectl get cs
#查询node节点是否ready
kubectl get nodes

#部署服务
kubectl create deployment nginx --image=nginx:1.14
#暴露端口
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pods
kubectl get svc
#删除pod与svc
kubectl delete deploy/nginx
kubectl delete svc/nginx

访问测试:
2.6 报错信息
若出现如下错误:
Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"cgroupfs\" is diffelet: misconfiguration: kubelet cgroup driver: \"cgroupfs\" is different from docker cgroup driver: \"systemd\""
报错故障:docker与k8s的资源管理器不同kubelet cgroup driver: “cgroupfs” is different from docker cgroup driver: “systemd”"
解决方法:修改docker与k8s的资源管理器为systemd
查询docker的cgroup
#docker修改
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}
#重启服务
systemctl daemon-reload
systemctl restart docker
#k8s修改方法
vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
#或vim /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
--cgroup-driver=systemd
#重启服务
systemctl daemon-reload
systemctl restart kubelet

边栏推荐
- 4.2 Virtual Member Functions
- Maxwell is an easy-to-use software for capturing MySQL data in real time
- MySQL修改端口号(修改mysql的端口号会有问题吗)
- 又一款装机神器
- What is low code? Which platforms are suitable for business personnel? Is it reliable to develop the system?
- oracle如何导出数据(oracle如何备份数据库)
- Ctfshow network lost track record (1)
- The greatest romance of programmers~
- 【题目】两数相加
- What is ci/cd| Achieve faster and better software delivery
猜你喜欢

Backup and recovery of SQL Server database

Moco V1: the visual field can also be self supervised

The greatest romance of programmers~

Interpretation of netappp SP sensors output content

Redis缓存雪崩、缓存穿透、缓存击穿

一名在读研究生的自白:我为什么会沉迷于openGauss 社区?

又一款装机神器

Lazada店铺如何产号高效补单?(测评自养号技术详解篇)

广和通&高通物联网技术开放日成功举办

Efficientformer: lightweight vit backbone
随机推荐
What is ci/cd| Achieve faster and better software delivery
After Europe, it entered Japan and South Korea again, and the globalization of Pico consumer VR accelerated
Deit: attention can also be distilled
Color finder actual combat (QT including source code)
DLL decompile (decompile encrypted DLL)
setPreviewCallbackWithBuffer的出帧效率会变低
【input 身份证号】星号 代替,input 切割成 多个 小格格(类似)
The framing efficiency of setpreviewcallbackwithbuffer will become lower
分页功能(板子)
Mobilevit: challenge the end-to-side overlord of mobilenet
C language function program example (super complete)
【周周有奖】云原生编程挑战赛“边缘容器”赛道邀你来战!
关键路径的分析
Moco V1: the visual field can also be self supervised
Basic operations of unity3d scene production
使用缓冲的方式采集视频
如何度量软件架构
查询oracle视图创建语句及如何向视图中插入数据[通俗易懂]
Moco V2: further upgrade of Moco series
4.1 various calling methods of member