Kubernetes (K8s) 集群部署指南:从环境准备到应用部署(脚本部署)

使用方法

本文章内容参考自:Kubernetes (K8s) 集群部署指南:从环境准备到应用部署

1. 环境准备

  • 操作系统:所有节点需为 CentOS 7。
  • 网络要求:所有节点需能相互通信,且能访问外网(或已配置镜像加速)。
  • 脚本文件 :将三个文件放置在同一目录,例如 /opt/kubernetes

2. 下载或上传脚本

  1. 使用wget直接下载(在每个节点都执行)

    请先执行 yum -y install wget

    bash 复制代码
    # 创建目录
    sudo mkdir -p /opt/kubernetes 
    
    # 切换目录
    cd /opt/kubernetes 
    
    # 下载资源
    wget https://gitee.com/xy12306/k8s/raw/master/URL/k8s_v2.6.tar
    
    # 解压资源
    tar -xvf k8s_v2.6.tar

3. 执行脚本

  • 打开master节点(在 /opt/kubernetes 文件夹下)

    bash 复制代码
    # 赋予执行权限
    chmod +x *.sh
    
    # Master节点
    ./master.sh 
  • 打开node节点(在 /opt/kubernetes 文件夹下)

    bash 复制代码
    # 赋予执行权限
    chmod +x *.sh
    
    # Node节点
    ./node.sh 

master节点 输出示例

按照以上格式复制后输入到Node节点即可成功加入集群。


验证集群状态

  • 在主节点执行以下命令
csharp 复制代码
# 查看节点状态
kubectl get nodes

# 查看 Pod 状态(确保 Calico 等组件正常)
kubectl get pods -n kube-system
  • 如果 Token 过期的话:在主节点重新生成 Token:
lua 复制代码
sudo kubeadm token create --print-identity

部署测试应用并访问

1. 部署一个简单的Nginx应用

ini 复制代码
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort

2. 查看服务状态:

kubectl get services

kubectl get pods

kubectl get deployments

scss 复制代码
[root@master ~] kubectl get svc nginx
NAME    TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
nginx   NodePort   10.111.140.102   <none>        80:30433/TCP   5

您已经成功创建了一个 Nginx 的 Deployment 并将其暴露为 NodePort 类型的 Service。根据您的输出,Nginx 服务的 NodePort30433,这意味着您可以通过集群中任何节点的 IP 地址和端口 30433 访问 Nginx。

3. 访问 Nginx

使用查看节点的 IP 地址kubectl get nodes -o wideNodePort 端口(30433)访问 Nginx。您可以通过以下方式访问:

  • 通过浏览器访问 :在浏览器地址栏中输入 http://<节点IP>:30433
arduino 复制代码
http://192.168.55.161:30433
  • 通过 **curl**命令在虚拟机中访问:
arduino 复制代码
curl http://192.168.55.161:30433

安装 Kubernetes Dashboard 可视化工具

bash 复制代码
# 安装 Kubernetes Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

# 检查是否正常运行,需状态全都为running
kubectl get pods -n kubernetes-dashboard
  • 创建 dashboard-admin 用户并授权
lua 复制代码
kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin

创建了一个名为 dashboard-admin 的 ServiceAccount,位于 kubernetes-dashboard 命名空间。

创建了一个名为 dashboard-admin 的 ClusterRoleBinding,将 dashboard-admin ServiceAccount 绑定到 cluster-admin 角色。

  • 获取用户 Token
lua 复制代码
kubectl create token dashboard-admin -n kubernetes-dashboard
  • 修改 Service 类型为 NodePort
css 复制代码
kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec":{"type":"NodePort"}}'
  • 查看 Service 的 NodePort:
arduino 复制代码
kubectl get svc -n kubernetes-dashboard
  • 访问 Dashboard

    • 通过 https://<节点IP>:30375 访问 Dashboard。

注意:请将 <节点IP> 替换为实际的 Kubernetes 节点 IP 地址。


本文章仅供参考,适用于初学者

相关文章:

Kubernetes (K8s) 集群部署指南:从环境准备到应用部署

CentOS 7 环境下的 Docker 安装与配置

Docker国内镜像源/加速地址-每周更新

相关推荐
金刚猿7 小时前
01_虚拟机中间件部署_root 用户安装 docker 容器,配置非root用户权限
docker·中间件·容器
JH_Kong8 小时前
解决 WSL 中 Docker 权限问题:从踩坑到完整修复
docker·容器
忆~遂愿8 小时前
GE 引擎与算子版本控制:确保前向兼容性与图重写策略的稳定性
大数据·开发语言·docker
陈桴浮海9 小时前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
张小凡vip10 小时前
Kubernetes--k8s中部署redis数据库服务
redis·kubernetes
Hello.Reader11 小时前
Flink Kubernetes HA(高可用)实战原理、前置条件、配置项与数据保留机制
贪心算法·flink·kubernetes
70asunflower12 小时前
Emulation,Simulation,Virtualization,Imitation 的区别?
linux·docker
ShiLiu_mtx12 小时前
k8s - 7
云原生·容器·kubernetes
春日见13 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
xuhe213 小时前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr