千家信息网

k8s的安装与简单使用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"k8s的安装与简单使用",在日常操作中,相信很多人在k8s的安装与简单使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"k8s的安装与简单使用"的疑惑
千家信息网最后更新 2026年11月01日k8s的安装与简单使用

这篇文章主要介绍"k8s的安装与简单使用",在日常操作中,相信很多人在k8s的安装与简单使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"k8s的安装与简单使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. 内容编排与kubernetes介绍

  • 支持集群环境内容编排的工具kubernetes 简称k8s.

  • k8s是谷歌官方提供的,底层基于docker,与docker-swarm是竞争关系。

  • 集群容器管理领域几乎都是采用的k8s。

k8s的职责

  • 自动化容器的部署和复制

  • 随时扩展或收缩容器规模

  • 容器分组Group,并且提供容器间的负载均衡

  • 实时监控,即时故障发现,自动替换

2.k8s基本概念

  • k8s Master 主节点

  • Node 节点

  • Service 服务

  • Replication Controller 复制控制器

  • Label 标签

  • Container 容器

  • Pod k8s最小控制单元

Master

Master是集群的网关和中枢枢纽,主要作用:暴露API接口,跟踪其他服务器的健康状态、以最优方式调度负载,以及编排其他组件之间的通信。单个的Master节点可以完成所有的功能,但是考虑单点故障的痛点,生产环境中通常要部署多个Master节点,组成Cluster.

Node

Node是k8s的工作节点,负责接收来自Master的工作指令,并根据指令相应地创建和销毁Pod对象,以及调整网络规则进行合理路由和流量转发。生产环境中,Node节点可以有N个。

Pod

  • pod是容器的容器,可以包含多个Container

  • 是k8s最小的可部署的单元,一个Pod就是一个进程

  • pod内部容器的网络互通,每个pod都有独立的虚拟ip

  • pod都是部署完整的应用或者模块

kubelet kube-proxy docker

3. k8s安装

国内安装k8s途径

  • 使用kubeadmin离线安装

  • 使用阿里公有云平台k8s

  • 通过yum官方仓库

  • 二进制包形式安装,kubeasz

3.1 安装kubeadmin加载k8s镜像
# 以下命令在三台虚拟机执行 yz10  yz20  yz21mkdir /usr/local/k8s-installcd /usr/local/k8s-install

4. k8s离线部署

10.211.55.10  yz10   Master节点10.211.55.20  yz20   Node节点10.211.55.21  yz21   Node节点
# 1. 调整时区timedatectl set-timezone Asia/Shanghai# 2. 关闭selinux和防火墙sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/configsetenforce 0systemctl disable firewalldsystemctl stop firewalld# 3. k8sadmin镜像下载附带对应的docker# 4. 镜像上传到每个节点mkdir -p /usr/local/k8s-installscp -r kubernetes-1.14 root@yz10:/usr/local/k8s-install# 5. 安装docker,记得配置加速器tar -xf docker-ce-18.09.tar.gzcd docker yum localinstall -y *.rpm# 6. 确认cgroup为 cgroupfsdocker info|grep cgroup# 7. 安装kubeadmtar -xf kube114-rpm.tar.gzcd kube114-rpmyum localinstall -y *.rpm# 8. 关闭交换区swapoff -a  #关闭vi /etc/fstab# 注释这行 永久关闭#/dev/mapper/centos-swap swap                    swap    defaults        0 0# 9. 配置网桥cat < /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOFsysctl --system# 10. 通过镜像安装k8sdocker load -i k8s-114-images.tar.gzdocker load -i flannel-dashboard.tar.gz

5. 构建k8s集群

确保上述节点都已经安装好了k8s。

# master主服务器网络设置kubeadm init --kubernetes-version v1.14.1 --pod-network-cidr 10.244.0.0/16# 运行完毕后查看需要手动运行的命令mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config    # 查看节点, 可以看到只有一个master节点kubectl get nodesNAME   STATUS     ROLES    AGE     VERSIONyz10   NotReady   master   5m21s   v1.14.1# 查看存在问题的podkubectl get pod --all-namespaces

# pending 是需要安装flannel网络组件kubectl create -f /usr/local/k8s-install/kubernetes-1.14/kube-flannel.yml# 再次查看,已经处于running状态kubectl get pod --all-namespaces# 查看master的token kubeadm token list# 其余节点加入master节点集群kubeadm join 10.211.55.10:6443 --token 63zvtd.rej4gqrhselysqsb --discovery-token-unsafe-skip-ca-verification

master节点运行: kubectl get nodes

可以看到,集群已经部署完毕。

6. k8s设置重启服务

  • kubeadm 是k8s集群快速构建工具

  • kubelet 运行在所有节点上,负责启动pod和容器,以系统服务的形式出现

  • kubectl 是k8s命令行工具,提供指令

systemctl start kubelet

设置开机启动 systemctl enable kubelet

7.开启WebUI Dashboard

# master开启仪表盘kubectl apply -f kubernetes-dashboard.yamlkubectl apply -f admin-role.yamlkubectl apply -f kubernetes-dashboard-admin.rbac.yamlkubectl -n kube-system get svc# 查看pod情况,dashbord running正常kubectl get pods --all-namespaces# 遇到问题可以删除pod,重新配置kubectl -n kube-system delete pod/{podName}

访问 http://宿主机ip:32000/ 即可进入dashbord

8.dashbord 部署tomcat集群

工作负载 -》 创建 即可

9.deployment脚本部署tomcat集群

  • 部署是指k8s向node节点发送指令创建容器的过程

  • k8s支持yml格式的部署脚本

  • kubectl create -f 部署文件.yml

编写第一个k8s部署脚本文件:

apiVersion: extensions/v1beta1kind: Deploymentmetadata:   name: tomcat-deployspec:   replicas: 2  template:     metadata:      labels:        app: tomcat-cluster    spec:       containers:       - name: tomcat-cluster        image: tomcat        ports:         - containerPort: 8080

与部署相关的常用命令:

  • kubectl create -f 部署文件.yml -》 创建部署

  • kubectl apply -f 部署文件.yml -》 更新部署配置

  • kubectl get pod [-o wide] -》 查看已部署pod

  • kubectl describe pod pod名称 -》 查看pod详细信息

  • kubectl logs [-f] pod名称 -》 查看pod输出日志

# 创建tomcat容器kubectl create -f tomcat-deploy.yml# 查看部署kubectl get deployment

10. 外部访问tomcat集群

service 服务用于对外暴露应用。

编写服务 tomcat-service.yml

apiVersion: v1kind: Servicemetadata:   name: tomcat-service  labels:     app: tomcat-servicespec:  type: NodePort  selector:     app: tomcat-cluster  ports:   - port: 18010    targetPort: 8080    nodePort: 32500
# 创建负载均衡服务kubectl create -f tomcat-service.yml# 查看服务kubectl get service

11. 基于NFS实现集群文件共享

  • nfs主要是采用远程过程调用RPC机制实现文件传输

  • yum install -y nfs-utils rpcbind

# 编辑nfs共享文件设置vi /etc/exports/usr/local/data/www-data  10.211.55.10/24(rw,sync)
systemctl start nfs.servicesystemctl start rpcbind.servicesystemctl enable nfs.servicesystemctl enable rpcbind.service# exportfs查看exportfs/usr/local/data/www-data                10.211.55.10/24  # 说明配置生效                # 节点安装工具yum install -y nfs-utils# 节点安装完毕后showmount -e yz10 # 挂载文件mkdir -p /mnt/www-datamount yz10:/usr/local/data/www-data /mnt/www-data

12. 部署配置挂载点

# 查看deploymentkubectl get deployment# 删除部署,服务servicekubectl delete deployment tomcat-deploykubectl delete service tomcat-service# 重新部署挂载vi tomcat-deploy.yml # 修改部署文件
apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: tomcat-deployspec:  replicas: 2  template:    metadata:      labels:        app: tomcat-cluster    spec:      volumes:       - name: webapp        hostPath:           path: /mnt/www-data      containers:      - name: tomcat-cluster        image: tomcat        ports:        - containerPort: 8080        volumeMounts:         - name: webapp          mountPath: /usr/local/tomcat/webapps
# 进入pod查看挂载是否成功kubectl exec -it tomcat-deploy-6dcc5c59c-hg5z7 bash

13. 利用 Rinetd 对外提供Service以及负载均衡支持

vi tomcat-service.yml 修改服务文件

apiVersion: v1kind: Servicemetadata:  name: tomcat-service  labels:    app: tomcat-servicespec:#  type: NodePort  selector:    app: tomcat-cluster  ports:  - port: 18010    targetPort: 8080#    nodePort: 32500
# 创建服务kubectl create -f tomcat-service.yml# 在www-data 创建一个test目录创建文件vi index.jsp<%=request.getLocalAddr()%># 访问curl http://10.97.80.216:18010/test/index.jsp

可以观察到随机负载均衡的效果。

端口转发工具 Rinetd

  • Rinetd 是Linux操作系统中为重定向传输控制协议工具

  • 可以将源ip端口数据转发到目标ip端口

  • 在k8s中用于将service服务对外暴露

# 宿主机安装Rintedcd /usr/localhttp://www.rinetd.com/download/rinetd.tar.gzcd rinetdsed -i 's/65536/65535/g' rinetd.cmkdir -p /usr/man/yum install -y gccmake && make install# 编写端口映射配置vi /etc/rinetd.conf0.0.0.0 18010 10.97.80.216 18010# 加载配置rinetd -c /etc/rinetd.conf# 测试外部访问,已经可以通了http://yz10:18010/test/

14. 更新集群配置与资源限定

k8s部署调整命令

  • 更新集群配置: kubectl apply -f yml文件

  • 删除部署|服务|pod

  • kubectl delete deployment | service | pod 名称

资源限定

containers: - name: tomcat-cluster  image: tomcat  resources:     requests:  # 需要的资源      cpu: 1      memory: 500Mi    limits:    # 限制的资源      cpu: 2   # cpu不一定是整数      memory: 1024Mi

到此,关于"k8s的安装与简单使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

节点 服务 集群 容器 文件 配置 工具 命令 均衡 指令 端口 网络 资源 镜像 学习 运行 名称 环境 脚本 问题 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技产业 科技互联网项目 互联网扶贫科技 中资互联网科技 北京互联网科技 西安互联网科技 华中科技大学互联网 成都玖崟互联网科技有限公司乐商圈怎么样 南山科技园互联网公司有哪些 福建科技产业互联网发展 阿大互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 长沙茂晟互联网科技有限公司 卓翼科技产业互联网合作 互联网企业科技类企业如何做账 电子商务与互联网科技的关系 梅州GM互联网络科技有限公司 卡尔迅互联网科技有限公司 信承诺互联网科技有限公司 互联网界的黑科技 深圳互联网络科技有限公司 中国最先进互联网科技公司 剑昆互联网络科技有限公司临桂 互联网科技公司实习生 河南住房之家互联网科技 长沙互联网科技 山东子淼互联网科技有限公司 怎样加入科技互联网 科技信息时代互联网发展 盐城市攀科互联网科技有限公司
0