当前位置:网站首页>kubernetes集群搭建
kubernetes集群搭建
2022-06-12 11:31:00 【江小南】
前提条件
k8s需要容器化的运行环境,所以我们首先需要安装Docker,具体可以参考之前的文章。
kubeadm方式搭建集群
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具,这个工具能通过两条指令完成一个kubernetes集群的部署。
第一、创建一个Master节点
kubeadm init
第二、将Node节点加入到当前集群中
kubeadm join <Master节点的IP和端口>
1. 初始化工作
这里准备了两台虚拟机做演示。
| 节点属性 | ip |
|---|---|
| master | 192.168.237.149 |
| node1 | 192.168.237.150 |
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
各个机器设置自己的域名
hostnamectl set-hostname xxxx
将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0 # 临时
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config # 永久
关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久
允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
使配置生效
sudo sysctl --system
以上这些命令在每台机器上都需要执行。
2. 安装kubelet、kubeadm、kubectl
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.20.9 kubeadm-1.20.9 kubectl-1.20.9 # 指定版本,根据需要选择
systemctl enable kubelet # 设置开机启动
systemctl enable kubelet --now kubelet # 立即启动
以上这些命令在每台机器上都需要执行。
通过
systemctl status kubelet可以看到kubelet 现在每隔几秒就会重启,因为它陷入了一个等待 kubeadm 指令的死循环。(正常情况,因为在等待指令)
3. 使用kubeadm引导集群安装
下载各个机器需要的镜像
sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
生成
images.sh文件,里面包含我们需要的镜像。
chmod +x ./images.sh && ./images.sh # 赋予权限并执行。
以上这些命令在每台机器上都需要执行。
可以看到我们需要的镜像已经下载完毕。
[[email protected] ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/kube-proxy v1.20.9 8dbf9a6aa186 10 months ago 99.7MB
registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/kube-apiserver v1.20.9 0d0d57e4f64c 10 months ago 122MB
registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/kube-controller-manager v1.20.9 eb07fd4ad3b4 10 months ago 116MB
registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/kube-scheduler v1.20.9 295014c114b3 10 months ago 47.3MB
registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/etcd 3.4.13-0 0369cf4303ff 20 months ago 253MB
registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/coredns 1.7.0 bfe3a36ebd25 23 months ago 45.2MB
registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/pause 3.2 80d28bedfe5d 2 years ago 683kB
[[email protected] ~]#
4. 初始化主节点
所有机器添加master域名映射,以下需要修改为自己的
echo "192.168.237.149 cluster-endpoint" >> /etc/hosts
这就相当于告诉每个节点哪一个才是主节点(每个节点都需要执行)。
做完这一步我们发现通过域名在node节点是可以ping通master节点的。
[[email protected] ~]# ping cluster-endpoint
PING cluster-endpoint (192.168.237.149) 56(84) bytes of data.
64 bytes from cluster-endpoint (192.168.237.149): icmp_seq=1 ttl=64 time=0.435 ms
64 bytes from cluster-endpoint (192.168.237.149): icmp_seq=2 ttl=64 time=0.449 ms
^C
--- cluster-endpoint ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 0.373/0.419/0.449/0.033 ms
[[email protected] ~]#
主节点初始化
kubeadm init \
--apiserver-advertise-address=192.168.237.149 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16
kubeadm init \
--apiserver-advertise-address=192.168.237.149 \
--control-plane-endpoint=cluster-endpoint \
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \
--kubernetes-version v1.20.9 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=192.168.0.0/16
这个命令只在主节点执行。
192.168.237.149修改为主节点ip。10.96.0.0/12是server ip段,10.244.0.0/16是pod ip段。需要注意的是server和pod的ip段不能重叠,同时不能和机器的ip段重叠(所有网络范围不重叠)。
边栏推荐
- C# 35. Select default network card
- Verifiability and scarcity of NFT Digital Collections
- UI自动化测试中比较少见的异常记录
- 【藍橋杯單片機 國賽 第十一届】
- logrotate日志轮转方式create和copytruncate原理
- K52. Chapter 1: installing kubernetes v1.22 based on kubeadm -- cluster deployment
- go基于阿里云实现发送短信
- MySQL - built in function
- 你需要社交媒体二维码的21个理由
- 人类想要拥有金钱、权力、美丽、永生、幸福……但海龟只想做一只海龟
猜你喜欢

Relatively rare exception records in UI automation test

Problems in cross validation code of 10% discount

C# 37. textbox滚动条与多行

^34 scope interview questions

Don't swallow rice with vinegar! Teach you 2 moves to make the fish bones "run out" safely

Signal relay rxsf1-rk271018dc110v

B+ 树的简单认识
![[Blue Bridge Cup SCM 11th National race]](/img/da/3c8a9efd5b28f67816f239531a0339.png)
[Blue Bridge Cup SCM 11th National race]

你需要社交媒体二维码的21个理由

Clickhouse column basic data type description
随机推荐
arm各种交叉编译工具的区别
套接字编程Udp篇
AI - face
Windows10 install mysql-8.0.28-winx64
^33 variable promotion and function promotion interview questions
K58. Chapter 1 installing kubernetes V1.23 based on kubeadm -- cluster deployment
Process creation and recycling
Face recognition PIP failed to install Dlib Library
AcWing 132. Group queue (queue simulation question)
InfoQ 极客传媒 15 周年庆征文|position:fixed 虚拟按键触发后无法生效问题分析及解决方案探究
35. 搜索插入位置
字节序(网络/主机)转换
UI自动化测试中比较少见的异常记录
K52. Chapter 1: installing kubernetes v1.22 based on kubeadm -- cluster deployment
tensorflow 2.x 多分类混淆矩阵及评价指标计算方法(精确率、召回率、f1分数)
SharDingJDBC-5.1.0按月水平分表+读写分离,自动创表、自动刷新节点表
Reentrantlock source code analysis
MCUXpresso开发NXP RT1060(3)——移植LVGL到NXP RT1060
你需要社交媒体二维码的21个理由
M-arch (fanwai 10) gd32l233 evaluation -spi drive DS1302