当前位置:网站首页>kubeadm创建kubernetes集群
kubeadm创建kubernetes集群
2022-06-26 23:31:00 【江小南】
kubeadm创建集群
我们使用“公有云-青云”提供的服务器作为今天的演示操作。准备三台机器,一个主控节点,两个工作节点,需要注意安全组和VPC设置。

前提条件
Kubernetes集群的安装需要依赖于容器化的运行环境,所以我们首先要在每一个节点上安装docker。方法参考我之前的文章。
1、基础环境
所有机器执行以下操作。
各个机器设置自己的域名
hostnamectl set-hostname xxxx
禁用SELinux
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 <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=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
exclude=kubelet kubeadm kubectl
EOF
# 下载指定版本
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
# 立即/开机自启动
sudo systemctl enable --now 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
# 添加可执行权限并执行脚本进行下载。
chmod +x ./images.sh && ./images.sh
通过这个步骤可以将创建集群所需的组件下载下来。工作节点只需要下载kube-proxy即可,全部下载也没有关系。
4. 初始化主节点
#所有机器添加master域名映射
echo "172.31.0.2 cluster-endpoint" >> /etc/hosts
这一步的目的是告诉每一个节点我将哪一个节点作为主节点(集群入口)。这里需要修改为自己的ip,我这里使用公有云的内网ip。
#主节点初始化,只在主节点运行此命令
kubeadm init \
--apiserver-advertise-address=172.31.0.2 \
--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
这里其实是定义了我将来在创建service和pod的时候所使用的网络段。需要注意apiserver-advertise-address为自己的主节点ip,并且要保证所有网络范围不重叠。pod-network-cidr如果有修改后面我们还需要修改网络组件的网络范围。
出现以下内容说明集群master节点初始化成功。
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/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You 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 cluster-endpoint:6443 --token xsmvuy.43k3verg00x4s5gs \
--discovery-token-ca-cert-hash sha256:2d4a06dfe981eb1274831a027690fdfa3a6c89d0968af331d6d26c16f35e7bdb \
--control-plane
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join cluster-endpoint:6443 --token xsmvuy.43k3verg00x4s5gs \
--discovery-token-ca-cert-hash sha256:2d4a06dfe981eb1274831a027690fdfa3a6c89d0968af331d6d26c16f35e7bdb
我们按照提示执行相应的命令即可。
5. 安装网络组件
# 只在主节点运行此命令
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
6. 加入worker节点
# 只在工作节点运行此命令
kubeadm join cluster-endpoint:6443 --token xsmvuy.43k3verg00x4s5gs \
--discovery-token-ca-cert-hash sha256:2d4a06dfe981eb1274831a027690fdfa3a6c89d0968af331d6d26c16f35e7bdb
这些内容还是根据提示信息来做。
补充:上面token有效时间为24小时,过期之后使用以下命令在主节点重新生成。
kubeadm token create --print-join-command
高可用部署方式,也是在这一步的时候,使用添加主节点的命令即可.
7. 验证集群
[[email protected] ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 89m v1.20.9
k8s-worker1 Ready <none> 68m v1.20.9
k8s-worker2 Ready <none> 68m v1.20.9
[[email protected] ~]#
至此,一个kubernetes集群搭建完毕。
边栏推荐
- 邮箱附件钓鱼常用技法
- Operations research says that in issue 66, Behrman also has "speech phobia"?
- 让敏捷回归本源——读《敏捷整洁之道》有感
- Openpyxl module
- Learun low code OA system construction platform
- 【界面】pyqt5和Swin Transformer对人脸进行识别
- Service discovery, storage engine and static website of go language
- Simple test lightweight expression calculator fly
- Wechat applet automatically generates punch in Poster
- Where is it safer to open an account to buy funds
猜你喜欢

Outside the code: writing is the best way to force growth

大赛报名 | AI+科学计算重点赛事之一——中国开源科学软件创意大赛,角逐十万奖金!

Typera set title auto numbering

Crawler and Middleware of go language

Intrusion trace cleaning

Let agile return to its original source -- Some Thoughts on reading the way of agile neatness

UnityEditor编辑器扩展-表格功能

go中的微服务和容器编排

12 color ring three primary colors

超硬核!华为智慧屏上的家庭相册竟可以自动精准分类?
随机推荐
leetcode 1143. Longest common subsequence (medium)
简单测试轻量级表达式计算器Flee
阿里云服务器的购买、基本配置、(xshell)远程连接、搭建环境
go语言的服务发现、存储引擎、静态网站
Outside the code: writing is the best way to force growth
【Try to Hack】正向shell和反向shell
利用burp精准定位攻击者
入侵痕迹清理
Safe and cost-effective payment in Thailand
Service discovery, storage engine and static website of go language
颜色搭配和相关问题
300 questions lesson 3 vector group
浅谈分布式系统开发技术中的CAP定理
国产框架MindSpore联合山水自然保护中心,寻找、保护「中华水塔」中的宝藏生命
通过两个stack来实现Queue
手机能开户炒股吗 网上开户炒股安全吗
让敏捷回归本源——读《敏捷整洁之道》有感
The client implements client Go client type definition connection
Installation of xshell and xftp
Electronic Society C language level 1 30, calculation of last term of arithmetic sequence