K8s初次入门

初步:搭建k8s集群

k8s 集群主机清单

主机名ip地址
master1.50
node-00011.51
node-00021.52
node-00031.53
node-00041.54
node-00051.55
harbor1.30

事先准备

  1. 所有的k8s集群主机卸载防火墙和禁用swap交换空间(docker、k8s建议禁用swap)

  2. 安装工具

    dnf install -y kubeadm kubelet kubectl containerd.io ipvsadm ipset iproute-tc
    

    修改配置文件
    vim /etc/containerd/config.toml

    61:sandbox_image = "harbor:443/k8s/pause:3.9"
    125:SystemdCgroup = true
    154行新插入:      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["https://harbor:443"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor:443"]endpoint = ["https://harbor:443"][plugins."io.containerd.grpc.v1.cri".registry.configs."harbor:443".tls]insecure_skip_verify = true
    
  3. 配置内核参数

    [root@master ~]# cat /etc/modules-load.d/containerd.conf
    overlay
    br_netfilter
    xt_conntrack
    [root@master ~]# systemctl start systemd-modules-load.service
    [root@master ~]# cat /etc/sysctl.d/99-kubernetes-cri.conf
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    net.netfilter.nf_conntrack_max = 1000000
    [root@master ~]# sysctl -p /etc/sysctl.d/99-kubernetes-cri.conf
    

    设置Tab补全功能键

    [root@master ~]# source <(kubeadm completion bash|tee /etc/bash_completion.d/kubeadm)
    # 使用kubeadm completion bash生成适用于bash shell的kubeadm命令补全脚本,通过重定向将以上脚本作为source命令的输入,既激活kubeadm的命令补全功能,同时使用tee命令将补全脚本保存在指定的kubeadm文件中,确保未来bash会话h中,无需执行以上命令就可以享受kubeadm命令补全功能。
    [root@master ~]# source <(kubectl completion bash|tee /etc/bash_completion.d/kubectl)
    #同理如上,此次针对kubectl命令的补全功能
    

    对master主控节安装

    1. 测试系统环境

      [root@master ~]# kubeadm init --config=init/init.yaml --dry-run 2>error.log
      # --dry-run 模拟测试,不会对系统环境产生影响
      [root@master ~]# cat error.log
      # 查看是否有生成错误信息和警告
      [root@master ~]# rm -rf error.log /etc/kubernetes/tmp
      # 删除前任初始化的残留tmp,可以说没必要,模拟测试不会产生任何临时文件
      
    2. 主控节点初始化

      [root@master ~]# kubeadm init --config=init/init.yaml | tee init/init.log
      # 初始化主控节点,会生成/etc/kubernetes/admin.conf
      [root@master ~]# mkdir -p $HOME/.kube
      [root@master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      [root@master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
      # 给本地用户创建个集中便捷,具有管理员权限的k8s客户端配置环境,无需通过系统目录的配置admin.conf对k8s客户端进行管理,更好使用kubectl等工具管理初始化好的k8s集群
      # 复制 admin.conf 到 ~/.kube/config 是为了方便本地用户(尤其是非 root 用户)使用 kubectl 等 Kubernetes 客户端工具与刚刚初始化的集群进行交互。# 验证安装结果
      [root@master ~]# kubectl get nodesNAME     STATUS     ROLES           AGE   VERSION
      master   NotReady   control-plane   19s   v1.26.0
      # notready 尚未准备好接收工作负载#部署calico网络插件
      [root@master calico]# kubectl apply -f calico.yaml
      [root@master calico]# kubectl get nodesNAME     STATUS   ROLES           AGE   VERSION
      master   Ready    control-plane   23m   v1.26.0
      #此时ready准备好进行工作负载
      # Calico 是一个流行的开源网络解决方案,常用于 Kubernetes 集群中提供网络连接、策略管理和安全性。
      # 可使用 kubectl get pods -n calico-system 等命令监控 Calico 组件的状态,确保它们成功启动且运行正常。
      
    3. 安装计算节点(node系列)

      1.先从master主机获取凭证

      # 查看 token[root@master ~]# kubeadm token listTOKEN                     TTL         EXPIRES                abcdef.0123456789abcdef   23h         2022-04-12T14:04:34Z# 删除 token[root@master ~]# kubeadm token delete abcdef.0123456789abcdefbootstrap token "abcdef" deleted# 创建 token[root@master ~]# kubeadm token create --ttl=0 --print-join-command
      # ttl设置token到期周期,0为无限期
      kubeadm join 192.168.1.50:6443 --token fhf6gk.bhhvsofvd672yd41 --discovery-token-ca-cert-hash sha256:ea07de5929dab8701c1bddc347155fe51c3fb6efd2ce8a4177f6dc03d5793467
      # 只需要复制以上生成的命令到各个计算节点粘贴执行就好
      

      2.对各个计算节点进行配置(是否防火墙关掉/禁用swap、安装k8s相关软件包、配置内核参数)

      3.逐个加入master集群

      kubeadm join 192.168.1.50:6443 --token fhf6gk.bhhvsofvd672yd41 --discovery-token-ca-cert-hash sha256:ea07de5929dab8701c1bddc347155fe51c3fb6efd2ce8a4177f6dc03d5793467
      
    4. 通过master主机查看所有加入集群的计算节点主机

      # 验证节点工作状态
      [root@master ~]# kubectl get nodes# 验证容器工作状态
      [root@master ~]# kubectl -n kube-system get pods
      

      k8s集群管理

集群管理命令

子命令说明
help用于查看命令及子命令的帮助信息
cluster-info显示集群的相关配置信息
version查看服务器及客户端的版本信息
api-resources查看当前服务器上所有的资源对象
api-versions查看当前服务器上所有资源对象的版本
config管理当前节点上kubeconfig 的认证信息
  • kubectl api-resources 
    NAME             SHORTNAMES     APIVERSION      NAMESPACED      KINDbindings                        v1              true            Bindingendpoints        ep             v1              true            Endpoints# 查看资源对象类型
    namespaced 是否属于某命名空间,如果是false则是集群级别的,不属于任何特定命名空间,而是与整个集群的运行状态相关。
    kind 资源类型名
    
  • config

    # 查看当前认证使用的用户及证书[root@master ~]# kubectl config get-contexts CURRENT   NAME                          CLUSTER      AUTHINFO*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin# 使用 view 查看详细配置[root@master ~]# kubectl config view apiVersion: v1clusters:- cluster:certificate-authority-data: DATA+OMITTEDserver: https://192.168.1.50:6443name: kubernetescontexts:- context:cluster: kubernetesuser: kubernetes-adminname: kubernetes-admin@kubernetescurrent-context: kubernetes-admin@kuberneteskind: Configpreferences: {}users:- name: kubernetes-adminuser:client-certificate-data: REDACTEDclient-key-data: REDACTED
    

对其他主机进行管理授权

设置本地用户的 Kubernetes 配置文件,以便于使用 kubectl 等命令行工具以管理员身份访问和管理 Kubernetes 集群

[root@harbor ~]# dnf install -y kubectl[root@harbor ~]# mkdir -p $HOME/.kube[root@harbor ~]# rsync -av master:/etc/kubernetes/admin.conf $HOME/.kube/config[root@harbor ~]# chown $(id -u):$(id -g) $HOME/.kube/config# 验证节点工作状态
[root@harbor ~]# kubectl get nodes

何为pod?

pod由一个或者多个容器组成

pod是k8s中最小的管理元素

pod是一个服务的多个进程的聚合单位

同一个pod共享网络ip以及权限、共享主机名称、共享存储设备

pod管理命令

子命令说明备注
run/create创建资源对象可输出资源文件模板
get查看资源对象的状态信息常用参数: -o 显示格式
describe查询资源对象的属性信息
logs查看容器的报错信息常用参数: -c 容器名称
exec在某一个容器内执行特定的命令可选参数: -c 容器名称
cp在容器和宿主机之间拷贝文件或目录可选参数: -c 容器名称
delete删除资源对象可选参数: -l 标签
  • get

    kubectl get pods
    # 查看默认名称空间default下的podskubectl get pods -o name/wide/yaml/json
    #看pod名、详细信息、yaml格式的、json格式的详细信息kubectl get namespaces
    //查看所有名称空间kubectl -n kube-system get pods
    //查看指定的命名空间的所有pod(pods)
    
  • create

kubectl create namespace work //创建命名空间资源对象
  • run

    kubectl -n work run myhttp --image=myos:httpd
    #在work命名空间创建myhttp的pod资源对象
    
  • describe

    kubectl describe pod myweb   //查看资源对象的属性信息  是default命名空间的myweb如果要看work命名空间下的myhttp,则需要kubectl -n work describe pod myhttp
    # 可以查看到myweb资源分配给了哪位计算节点
    
  • logs

    kubectl logs myweb  //查看myweb日志
    
  • exec

    kubectl exec myweb -- ls //在myweb执行命令lskubectl exec -it myweb -- /bin/bash //以交互式进入bash
    
  • cp

    kubectl cp myweb:/etc/yum.repos.d /root/aaa
    
  • delete

    kubectl delete pods myweb kubectl -n work delete pods --allkubectl delete namespaces work
    

    资源对象文件入门

    简单的资源对象文件例如:

    cat myweb.yaml

    ---
    kind: Pod  //资源类型pod
    apiVersion: v1 //k8s api版本v1,是当前稳定的版本
    metadata:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python】在 Linux 上安装 Miniconda 的简易指南

如今一个人听歌总是会觉得失落 幻听你在我的耳边轻轻诉说 夜色多温柔 你有多爱我 如今一个人听歌总是会觉得难过 爱已不在这里我却还没走脱 列表里的歌 随过往流动 &#x1f3b5; 许嵩《幻听》 Miniconda 是一个轻量级的 Anaconda 分发版&#xff0c;它提…

PotatoPie 4.0 实验教程(30) —— FPGA实现摄像头图像中值滤波

中值滤波是什么&#xff1f; 图像的中值滤波是一种非线性图像滤波方法&#xff0c;它用于去除图像中的椒盐噪声或其他类型的噪声。中值滤波的原理是用每个像素周围的邻域中的中值来替代该像素的值。与均值滤波不同&#xff0c;中值滤波不会受到极端值的影响&#xff0c;因此在处…

数据仓库是什么

写在前面 刚接触大数据的新手小白可能会对数据仓库这个词比较陌生&#xff0c;本文将介绍数据仓库的主要特征及OLTP&OLAP的区别&#xff0c;帮助读者更好理解数据仓库。 一、什么是数据仓库 数据仓库&#xff0c;简称数仓&#xff0c;是一个对数据进行加工&#xff0c;集…

Linux的NVM安装

搬运 如何在 Linux 上安装和管理多个版本的 Node.js 想要在 Linux 计算机上安装多个版本的 Node.js&#xff1f;以下是您需要了解的有关 NVM 的信息。 如果您曾经因为没有安装兼容版本的 Node.js 而在运行项目时遇到问题&#xff0c;那么您并不孤单。幸运的是&#xff0c;这个…

YOLOv8 的安装、使用与训练

YOLOV8 YOLOv8简介 YOLOv8是YOLO系列的最新版本&#xff0c;它融合了先进的深度学习技术和目标检测领域的最新研究成果 与其前身相比&#xff0c;YOLOv8在速度和精度方面都有了显著的提升&#xff0c;使其成为一个理想的实时目标检测解决方案。该模型结合了卷积神经网络&…

快速了解 git 和 github 是什么,30 分钟速通版

安装 git 安装git和安装node、qq这种软件是一样的&#xff0c;到官网去下载安装就好了&#xff0c;记得选择正确的版本&#xff0c;mac和win需要下载的版本是不一样的。 git下载页面 配置 git 熟悉环境变量的小伙伴应该了解这一步的重要性&#xff0c;如果没有相关经验也不…

分段函数拟合-施加分段点连续约束条件|【Matlab源码+视频介绍】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…

解决eureka服务注册名报错

解决eureka服务注册名报错 解决eureka服务注册名报错简介正文使用RestTemplate.getForObject( url&#xff0c;Class)方法中&#xff0c;url直接使用服务注册名进行拼接后无法正常远程调用。如下 报错404&#xff0c;说明没访问到我的解决方法&#xff1a;换依赖版本原来的版本…

PotatoPie 4.0 实验教程(27) —— FPGA实现摄像头图像拉普拉斯边缘提取

拉普拉斯边缘提取有什么作用&#xff1f; 拉普拉斯边缘检测是一种常用的图像处理技术&#xff0c;用于检测图像中的边缘和边界。它的主要作用包括&#xff1a; 边缘检测&#xff1a;拉普拉斯算子可以帮助检测图像中的边缘&#xff0c;即图像中亮度快速变化的位置。这些边缘通常…

数据集笔记:处理北大POI 数据:保留北京POI

数据来源&#xff1a;Map POI (Point of Interest) data - Official data of the contest (pku.edu.cn) windows 下载方法&#xff1a;数据集笔记&#xff1a;windows系统下载北大开放数据研究平台的POI数据-CSDN博客 1 读取数据 1.1 列出所有的文件 dir1D:/data/PKU POI/2…

CentOS 9 (stream) 安装 nginx

1.我们直接使用安装命令 dnf install nginx 2.安装完成后启动nginx服务 # 启动 systemctl start nginx # 设置开机自启动 systemctl enable nginx# 重启 systemctl restart nginx# 查看状态 systemctl status nginx# 停止服务 systemctl stop nginx 3.查看版本确认安装成功…

springboot3整合redis

redis在我们的日常开发中是必不可少的&#xff0c;本次来介绍使用spring boot整合redis实现一些基本的操作&#xff1b; 1、新建一个spring boot项目&#xff0c;并导入相应的依赖&#xff1b; <dependency><groupId>org.springframework.boot</groupId><…

MySQL数据库安装——zip压缩包形式

安装压缩包zip形式的 MySQL 8数据库 一 、先进入官网下载 https://dev.mysql.com/downloads/mysql/ 二、解压到某个文件夹 我解压到了D:\mysql\mysql8 下面 然后在这个文件夹下手动创建 my.ini 文件和 data 文件夹 my.ini 内容如下&#xff1a; 注意 basedir 和 datadi…

[leetcode] B树是不是A树的子结构

给定两棵二叉树 tree1 和 tree2&#xff0c;判断 tree2 是否以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 注意&#xff0c;空树 不会是以 tree1 的某个节点为根的子树具有 相同的结构和节点值 。 示例 1&#xff1a; 输入&#xff1a;tree1 [1,7,5], tree2 [6,…

基于深度学习的车牌识别

如果你认为车牌只是车子的‘名字’&#xff0c;那么是时候让你见识一下&#xff0c;当科技赋予它‘超能力’时会发生什么&#xff1f; 上效果图&#xff1b; 这就是车牌识别的力量&#xff0c;下面是主函数代码&#xff1a; # -*- coding: UTF-8 -*- import argparse import …

服务器硬件:裸金属安装 VMware ESXi

写在前面 工作中遇到&#xff0c;简单整理博文内容涉及 裸金属安装VMware ESXi 基本步骤理解不足小伙伴帮忙指正 不必太纠结于当下&#xff0c;也不必太忧虑未来&#xff0c;当你经历过一些事情的时候&#xff0c;眼前的风景已经和从前不一样了。——村上春树 一、准备工作 确…

1. 房屋租赁管理系统(Java项目 springboot/vue)

1.此系统的受众 1.1 在校学习的学生&#xff0c;可用于日常学习使用或是毕业设计使用 1.2 毕业一到两年的开发人员&#xff0c;用于锻炼自己的独立功能模块设计能力&#xff0c;增强代码编写能力。 1.3 亦可以部署为商化项目使用。 2. 技术栈 jdk8springbootvue2mysq5.7&8…

基于SpringBoot + Vue实现的家政服务管理系统设计与实现+毕业论文+答辩PPT+指导搭建视频(包运行成功)

目录 项目介绍 论文展示 资源获取 项目介绍 家政服务管理平台是一个管理信息系统&#xff0c;为了宣传的需要&#xff0c;为了给用户提供方便快捷的服务&#xff0c;从而设计了家政服务管理平台。管理员可以通过这个系统把家政服务信息发布出去&#xff0c;可以方便用户快…

重庆市工程技术建设专业职称申报条件

重庆市工程技术建设专业职称申报条件链接重庆市人力资源和社会保障局 重庆市住房和城乡建设委员会关于印发重庆市工程技术建设专业职称申报条件的通知_重庆市人力资源和社会保障局类别基本条件业绩成果备注助理工程师具备硕士学位或第二学士学位&#xff1b;或具备大学本科学历…

Flink 实时数仓(二)【ODS 层开发】

前言 最近投了不少的实习&#xff0c;也收到不错的反馈&#xff0c;虽然是中小公司偏多&#xff0c;但是毕竟现在这个环境双非进大厂实习可不同当年了。可惜的是学院不放人&#xff0c;无奈啊&#xff0c;遍身罗绮者&#xff0c;不是养蚕人。我累死累活肝了两年了&#xff0c;好…