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

六.原理

相关推荐
Code_Artist2 小时前
使用Portainer来管理并编排Docker容器
docker·云原生·容器
Eternal-Student2 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
码农小丘2 小时前
一篇保姆式centos/ubuntu安装docker
运维·docker·容器
灼烧的疯狂4 小时前
K8S + Jenkins 做CICD
容器·kubernetes·jenkins
wenyue11215 小时前
Revolutionize Your Kubernetes Experience with Easegress: Kubernetes Gateway API
容器·kubernetes·gateway
梅见十柒7 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
Python私教7 小时前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
运维&陈同学8 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
O&REO9 小时前
单机部署kubernetes环境下Overleaf-基于MicroK8s的Overleaf应用部署指南
云原生·容器·kubernetes
politeboy9 小时前
k8s启动springboot容器的时候,显示找不到application.yml文件
java·spring boot·kubernetes