【云原生】2.2 kubeadm创建集群

【云原生】2.2 kubeadm创建集群一台兼容的 Linux 主机 Kubernetes 项目为基于 Debian 和 RedHat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令每台机器 2GB 或更多的 RAM 如果少于这个数字将会影响你应用的运行内存 2CPU 核或更多集群中的所有机器的网络彼此均能相互连接 公网和内网都可以

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

【云原生】2.2 kubeadm创建集群

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

【云原生】2.2 kubeadm创建集群

 二、安装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 < 
   

?第五步我们让以上的配置生效

sudo sysctl --system

2.2 安装kubelet、kubeadm、kubectl

? 我们这里需要安装三大这个组件。

cat < 
   

【云原生】2.2 kubeadm创建集群

?输入命令,让它自己慢慢下 

sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

 【云原生】2.2 kubeadm创建集群

 我们让所有的机器启动 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

【云原生】2.2 kubeadm创建集群

 给脚本加个权限

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

 ?如果你看到这个那么恭喜你,安装成功了

【云原生】2.2 kubeadm创建集群

 3.2 安装网络组件

curl https://docs.projectcalico.org/manifests/calico.yaml -O kubectl apply -f calico.yaml

【云原生】2.2 kubeadm创建集群

3.3 加入node节点

kubeadm join cluster-endpoint:6443 --token x5g4uy.wpjjdbgra92s25pp \ --discovery-token-ca-cert-hash sha256:eaee52bf9dda9429db616fcd5a308f4b917d3457a22

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

复制到浏览器的地址栏中,直接复制代码,粘贴

【云原生】2.2 kubeadm创建集群

 【云原生】2.2 kubeadm创建集群

注:将 type: ClusterIP 改为 type: NodePort 

设置访问端口

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

? 找到端口,在安全组放行

kubectl get svc -A |grep kubernetes-dashboard

?这是我们可以看到我们的安全端口

【云原生】2.2 kubeadm创建集群

在浏览器输入https://139.198.165.238:32759,就能访问登入界面了

格式:https://集群任意IP:端口

【云原生】2.2 kubeadm创建集群

?这是我们需要令牌,准备一个文件——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}}"

 【云原生】2.2 kubeadm创建集群

? 复制选中的部分,这就是我们的密钥。

 然后在 Kubeconfig 里面输入密钥,我们就可以访问了。

【云原生】2.2 kubeadm创建集群

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

【云原生】2.2 kubeadm创建集群

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210296.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午7:52
下一篇 2026年3月19日 上午7:53


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号