【云原生】2.2 kubeadm创建集群

 哈喽~大家好呀,欢迎大家来到 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博客

目录

一、前言

二、安装kubeadm

2.1 安装基础环境

2.2 安装kubelet、kubeadm、kubectl

 三、使用kubeadm引导集群

3.1 下载各个机器需要的镜像

3.2 安装网络组件

3.3 加入node节点

3.4 验证集群

3.5 部署dashboard


一、前言

🎡我们有三台机器(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 --system

2.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:6255797916eaee52bf9dda9429db616fcd828436708345a308f4b917d3457a22

3.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-dashboard
kubectl 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 里面输入密钥,我们就可以访问了。

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

  • 75
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 72
    评论
评论 72
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿追

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值