kubernetes入门

一.参考

安装1.23.0版本的k8s,更高版本会报错 master node not found.

kubeadm config images list下载指定版本 kubeadm配置文件_温柔一刀的技术博客_51CTO博客

Kubernetes集群安装与配置详解:从环境准备到工具安装全方位指南!_kubernetes安装详解-CSDN博客

VMware 安装 Centos7 超详细过程 | 菜鸟教程

K8S集群搭建------cri-dockerd版(包含问题解决方案)-CSDN博客

https://www.cnblogs.com/liuzhonghua1/p/18010847

基于kubernetes组件初步部署k8s-CSDN博客

kubeadm config images pull 拉取镜像失败的问题-CSDN博客

kubeadm init后看不到镜像 kubeadm node not found_mob64ca1405a060的技术博客_51CTO博客

二.背景

多台应用的自动发布部署。

根据不同机器的性能,自动调度、抢占、下线pod到不同机器。

不同的pod,ip是内网地址,如何互相通信.

三.架构

四.示例

1.cgoups

支持的subsystem

bash 复制代码
root@myweb-57c44474d8-45jwv:/usr/local/tomcat/webapps/demo# stat -fc %T /sys/fs/cgroup
tmpfs
root@myweb-57c44474d8-45jwv:/usr/local/tomcat/webapps/demo# cat /proc/cgroups
#subsys_name    hierarchy       num_cgroups     enabled
cpuset  10      18      1
cpu     2       128     1
cpuacct 2       128     1
memory  8       128     1
devices 4       128     1
freezer 9       18      1
net_cls 7       18      1
blkio   11      128     1
perf_event      5       18      1
hugetlb 6       18      1
pids    3       128     1
net_prio        7       18      1

测试脚本

bash 复制代码
i=0; while [ True ]; do i=$i+1;done;

运行发现cpu使用 100%.

执行cgroups限制脚本如下:

bash 复制代码
[root@k8s-node1 Downloads]# mkdir /sys/fs/cgroup/cpu/test1
[root@k8s-node1 Downloads]# echo $$ > /sys/fs/cgroup/cpu/test1/tasks
[root@k8s-node1 Downloads]# echo 10000 > /sys/fs/cgroup/cpu/test1/cpu.cfs_quota_us
[root@k8s-node1 Downloads]# more  /sys/fs/cgroup/cpu/test1/cpu.cfs_quota_us
10000

在运行测试脚本,发现cpu只使用了10%.

2.k8s部署

mysql和myweb的deployment和service部署示例.

访问地址:http://192.168.12.130:30001/demo/index.jsp

其中,yaml文件如下:

mysql-deploy.yaml

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
        ports:
        - containerPort: 3306

mysql-svc.yaml

复制代码
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
    - port: 3306
  selector:
    app: mysql

myweb-deploy.yaml

复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myweb
  labels:
    app: myweb
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myweb
  template:
    metadata:
      labels:
        app: myweb
    spec:
      containers:
      - name: myweb
        image: kubeguide/tomcat-app:v1
        env:
        - name: MYSQL_SERVICE_HOST
          value: 10.98.65.219
        ports:
        - containerPort: 8080

myweb-svc.yaml

复制代码
apiVersion: v1
kind: Service
metadata:
  name: myweb
spec:
  type: NodePort
  ports:
    - port: 8080
      nodePort: 30001
  selector:
    app: myweb

五.概念

1.cgroups

用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等).

2.kubernetes

Kubernetes 是一个开源的容器编排引擎,用来对容器化应用进行自动化部署、扩缩和管理.

3.node

一个虚拟机或者物理机器,取决于所在的集群配置。 每个节点包含运行pod所需的服务.节点上的组件包括 kubelet、 容器运行时(docker)以及 kube-proxy.

4.namespace/context

在单个集群中隔离 API 资源组的机制.将租户的工作负载划分到各不相同的逻辑管理单元中。

5.service/ClusterIp

将运行在一个或一组pod上的应用公开为外部服务的方法.

6.endpoint

service中的一组ip和port.

7.endpointSlice

8.deployment

管理应用的一组 Pod,通常适用于无状态的负载。

9.replicatSet/statefulSet/daemonSet/job

维护一组在任何时候都处于运行状态的 Pod 副本的稳定集合.

10.pod

是一组容器,在 Kubernetes 中创建和管理的、最小的可部署的计算单元。

11.container/image

比如类和对象.image是一个静态的随时可以运行的软件包, 包含运行应用程序所需的环境配置.

12.configMap

是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时pod可以将其用作环境变量、命令行参数或者存储卷中的配置文件。

13.LimitRange

14.pv/pvc

15.macVlanIp

六.原理

相关推荐
明月_清风4 小时前
K8s 从入门到上手:核心概念+常用工具全解析
后端·kubernetes
阿里云云原生7 小时前
阿里云可观测 2026 年 4 月产品动态
云原生
qq_364371727 小时前
基于 Docker 容器化环境配置
运维·docker·容器
塔克拉玛攻城狮8 小时前
详解cni插件cilium篇一:它为什么这么快?它还有哪些高级功能?
kubernetes·cilium
阿里云云原生8 小时前
Skills Registry 公测开启:为企业打造私有的 Skill 管理中心
云原生
吃胖点儿8 小时前
DevOps与自动化原理
云原生
GentleDevin9 小时前
Docker 运维常用命令大全
docker·容器·运维命令
运维全栈笔记9 小时前
基于Docker的MinIO单机部署与功能测试指南
运维·docker·容器
阿里云云原生9 小时前
HiClaw 发布 v1.1.0,提供 Kubernetes 集群部署实现,支持 Hermes Worker 运行时
kubernetes
心机之蛙qee10 小时前
docker的安装(RHEL9)
运维·docker·容器