当前位置:网站首页>【云原生】2.2 kubeadm创建集群
【云原生】2.2 kubeadm创建集群
2022-06-22 05:16:00 【程序猿追】
哈喽~大家好呀,欢迎大家来到 Kubernetes 篇(k8s篇)文章系列的第二篇——kubeadm创建集群,我们来一起看看吧。
个人主页:个人主页
系列专栏:【云原生系列】
与这篇相关的文章:
2.1 Kubernetes基础概念 【云原生】2.1 Kubernetes基础概念_程序猿追的博客-CSDN博客 1.5 Docker 进阶实战 【云原生】1.5 Docker 进阶实战_程序猿追的博客-CSDN博客_idea 链接docker 1.4 Docker 常用命令实战(下) 【云原生】1.4 Docker 常用命令实战(下)_程序猿追的博客-CSDN博客
目录
一、前言
我们有三台机器(node1节点,node2节点,node3节点)

所以我们的第一步就是把三台机器全部装好 docker(这里可以参照之前的文章),这里建议批量输入进行操作。

二、安装kubeadm
安装要求:
- 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令
- 每台机器 2 GB 或更多的 RAM (如果少于这个数字将会影响你应用的运行内存)
- 2 CPU 核或更多
- 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)
- 设置防火墙放行规则
- 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。请参见这里了解更多详细信息。
- 设置不同hostname
- 开启机器上的某些端口。请参见这里 了解更多详细信息。
- 内网互信
- 禁用交换分区。为了保证 kubelet 正常工作,你 必须 禁用交换分区。
- 永久关闭
2.1 安装基础环境
第一步我们要设置各个机器自己的域名
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 --system2.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 
我们让所有的机器启动 kubelet
sudo systemctl enable --now kubelet三、使用kubeadm引导集群
3.1 下载各个机器需要的镜像
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接下来的一步很关键,我们要设置主节点
注:所有机器添加master域名映射,以下需要修改为自己的
echo "172.31.0.4 cluster-endpoint" >> /etc/hosts接下来主节点初始化(--apiserver-advertise-address= + 主机号)
kubeadm init \
--apiserver-advertise-address=172.31.0.4 \
--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如果你看到这个那么恭喜你,安装成功了

3.2 安装网络组件
curl https://docs.projectcalico.org/manifests/calico.yaml -O
kubectl apply -f calico.yaml
3.3 加入node节点
kubeadm join cluster-endpoint:6443 --token x5g4uy.wpjjdbgra92s25pp \
--discovery-token-ca-cert-hash sha256:6255797916eaee52bf9dda9429db616fcd828436708345a308f4b917d3457a223.4 验证集群
- 验证集群节点状态
- kubectl get nodes
3.5 部署dashboard
到这里我们一直用的是命令行,感觉很枯燥无味,这里我们来一个可视化界面——dashboard。
kubectl apply -f
https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml如果命令没有用,我们就直接将https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml
复制到浏览器的地址栏中,直接复制代码,粘贴


注:将 type: ClusterIP 改为 type: NodePort
设置访问端口
kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard找到端口,在安全组放行
kubectl get svc -A |grep kubernetes-dashboard这是我们可以看到我们的安全端口

在浏览器输入https://139.198.165.238:32759,就能访问登入界面了
格式:https://集群任意IP:端口

这是我们需要令牌,准备一个文件——vi dash.yaml,输入指令,然后在应用一下
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboardkubectl apply -f dash.yaml令牌访问
#获取访问令牌
kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{
{.data.token | base64decode}}" 
复制选中的部分,这就是我们的密钥。
然后在 Kubeconfig 里面输入密钥,我们就可以访问了。

(求关注)持续更新中……

边栏推荐
- rambbmitmq消费方
- VirtualBox 6.1.34 release
- The yarn deployment mode depends on the pre upload settings
- js正则表达式实现千分位符
- Graduation feedback! All contributors of Apache Doris community come to receive gifts!
- 重构思维系列2-函数及变量
- DeformConv
- Accelerate the promotion of industrial Internet, and map out a new blueprint for development
- Topic selection system of college graduation design based on SSM
- DTS migration script sqlserver
猜你喜欢

Concurrent programming - thread pool

YARN 应用提交过程

Kubernetes——部署应用到集群中

Progress warning and problem management of progress control in Zhiyuan project management SPM system

Flynk deployment mode summary

Detailed explanation of deep learning technology for building an image search engine that can find similar images

When idea creates a method, it uses annotations to prompt method parameters (param), return value (return), and method function (description)

Pytest (12) -allure common features allure attach、allure. step、fixture、environment、categories

9. Gateway cross domain processing

What problems will be encountered during the implementation of MES management system
随机推荐
js正则表达式实现千分位符
Flink deployment mode (I) - standalone and Application
C语言字符串的一些使用注意事项
汉诺塔问题
C语言数据类型转换规则(隐式转换+显式转换)
6. Local - custom filter factory
Create a new local content and upload it to the code cloud branch
非递归打印斐波那契数列
C语言自定义函数的一些注意事项
2022 a special equipment related management (elevator) examination data and a special equipment related management (elevator) analysis
yarn部署模式依赖预上传设置
Monorepo丝滑方法论:引用模块热更新
NFC authentication makes the ultimate KYC experience
Contents of 2022 tea master (intermediate) examination and tea master (intermediate) examination
守护进程的流程
What is cloud hosting and what are its advantages?
Squoosh - 谷歌出品的免费开源图片压缩工具,图片大小减少90%!支持 API 开发调用
mysql day01课堂笔记
Chapter 6 infinite series_ Fourier series
Virtual address space