K8s初次入门

初步:搭建k8s集群

k8s 集群主机清单

主机名 ip地址
master 1.50
node-0001 1.51
node-0002 1.52
node-0003 1.53
node-0004 1.54
node-0005 1.55
harbor 1.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 nodes
      
      NAME     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 nodes
      
      NAME     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 list
      
      TOKEN                     TTL         EXPIRES                
      
      abcdef.0123456789abcdef   23h         2022-04-12T14:04:34Z
      
      # 删除 token
      
      [root@master ~]# kubeadm token delete abcdef.0123456789abcdef
      
      bootstrap 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      KIND
    
    bindings                        v1              true            Binding
    
    endpoints        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: v1
    
    clusters:
    
    - cluster:
    
        certificate-authority-data: DATA+OMITTED
    
        server: https://192.168.1.50:6443
    
      name: kubernetes
    
    contexts:
    
    - context:
    
        cluster: kubernetes
    
        user: kubernetes-admin
    
      name: kubernetes-admin@kubernetes
    
    current-context: kubernetes-admin@kubernetes
    
    kind: Config
    
    preferences: {
         }
    
    users:
    
    - name: kubernetes-admin
    
      user:
    
        client-certificate-data: REDACTED
    
        client-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下的pods
    
    kubectl 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执行命令ls
    
    kubectl 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 --all
    
    kubectl delete namespaces work
    

    资源对象文件入门

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

    cat myweb.yaml

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT学习之QtXlsx

背景&#xff1a; 本来我是想提取xml中的信息存在xlsx文件中的&#xff0c;网上很多说是使用QtXlsx&#xff1b; 于是我找了一些帖&#xff0c; 像&#xff1a;https://www.cnblogs.com/liming19680104/p/14398459.html&#xff1b; 大家的说法都是安装第三方库到QT中&#xff…

Linux内存相关名词介绍

在日常的问题排查过程中&#xff0c;Linux内存相关的问题也非常多&#xff0c;OOM、内存泄漏 都是比较头疼的而且非常常见一些问题。如下图&#xff0c;我们都知道Linux 内存将内存做了以下划分(如: Node、Zone、Page)&#xff0c;这里我们先简单看一些内存相关的名词解释。 …

「中标喜报」合众致达中标深圳安居乐寓智能水电表供货及安装项目

2024年4月25日&#xff0c;深圳合众致达科技有限公司(以下简称“我司”)成功中标安居乐寓2023盐田区保障性租赁住房改造提升项目的水电表供货与安装工程(二次)项目&#xff0c;此次中标标志着我司在城中村公寓出租房能源计费领域的专业实力及市场竞争力得到了进一步的认可。 我…

手搓数组栈(C语言)

stack.h #pragma once#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <stdbool.h> // 支持动态增长的栈 typedef int STDataType; typedef struct Stack {STDataType* a;int top; // 栈顶int capacity; // 容量 }Stack; //…

我们自己的芯片指令集架构——龙芯架构简介

CPU指令集架构&#xff08;ISA, Instruction Set Architecture&#xff09; CPU指令集架构是处理器硬件与软件之间的接口规范&#xff0c;它定义了一组基本指令&#xff0c;以及这些指令的操作格式、编码方式、寻址模式、寄存器组织、中断机制、异常处理等各个方面。ISA是计算…

MySQL中的并发控制,读写锁,和锁的粒度

MySQL中的并发控制&#xff0c;读写锁&#xff0c;和锁的粒度 并发控制的概述 在数据库系统中&#xff0c;并发控制是一种用于确保当多个用户同时访问数据库时&#xff0c;系统能够提供数据的一致性和隔离性的机制。MySQL支持多种并发控制技术&#xff0c;其中包括锁机制、多…

Unity镂空图像做法

问题和解决方案 现在要完成一个需求&#xff0c;即镂空中间部分的image&#xff0c;外围image可以定义颜色并可选屏蔽点击&#xff0c;而中间的image需要透明且可以穿透&#xff0c;必须不能屏蔽点击。 由此拆分成了两个问题&#xff1a; 1.定义外围image颜色&#xff0c;内…

力扣数据库题库学习(4.25日)

1484. 按日期分组销售产品 问题链接 思路与分析 编写解决方案找出每个日期、销售的不同产品的数量及其名称。 每个日期的销售产品名称应按词典序排列。 返回按 sell_date 排序的结果表。我来分析一下&#xff0c;这里的题目要求其实就是统计不同日期下的销售产品数&#xf…

什么是域名解析?域名解析的完整流程是什么?如何清理DNS缓存?(附源码)

目录 1、什么是域名&#xff1f; 2、为什么使用域名&#xff1f; 3、域名解析的完整流程 4、调用gethostbyname系统接口将域名解析成IP地址 5、为什么需要清理系统DNS缓存&#xff1f; 6、使用cmd命令清理DNS缓存 7、通过代码去清除系统DNS缓存 C软件异常排查从入门到精…

Ubuntu 24.04 LTS (Noble Numbat) 正式版发布

Ubuntu 24.04 LTS (Noble Numbat) 正式版发布 Canonical 的第 10 个长期支持版本在性能工程、企业安全和开发人员体验方面树立了新标准 请访问原文链接&#xff1a;Ubuntu 24.04 LTS (Noble Numbat) 正式版发布&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。…

Pytest切换测试环境:使用hooks函数、pytest-base-url插件

Pytest切换测试环境&#xff1a;使用hooks函数、pytest-base-url插件 1.使用hooks函数2.使用pytest-base-url插件安装pytest-base-url使用 1.使用hooks函数 # conftest.py#Initialization hooks 初始化钩子: 添加自定义命令行选项 def pytest_addoption(parser):parser.addopt…

一、OSPF基础

目录 1.路由协议的优先级 2.转发原则&#xff1a;最长匹配原则 3.负载分担 4.路由备份&#xff08;浮动路由&#xff09; 5.路由协议的分类 6.动态路由 7.距离矢量路由协议&#xff08;BGP&#xff0c;RIP&#xff09; 8.链路状态路由协议&#xff08;OSPF&#xff0c;I…

Vue3框架

Vue3框架 一.使用create-vue搭建Vue3项目二.组合式API - setup选项1.setup选项的写法和执行时机2.setup中写代码的特点3. script setup 语法糖 三.组合式API - reactive和ref函数1. reactive2. ref3. reactive 对比 ref 四.组合式API - computed五.组合式API - watch1. 侦听单个…

Flutter 有什么优异特性和革命性创新之处?

Flutter 有什么优异特性和革命性创新之处? 什么是 Flutter&#xff1f; Flutter mobile app SDK是一种新的方式来构建漂亮的原生移动应用程序&#xff0c;摆脱过去常见的“千篇一律”的应用程序。用过Flutter的人都对它赞赏有加&#xff1b; 相比较其他新型系统&#xff0c…

制作场景资源的Prefab

制作骨骼模型的Prefab 现在游戏内的使用骨骼模型是通过老版的Animator去实现控制的&#xff0c;所以需要将模型切换为Animator 第一步&#xff0c;动画类型设置为Generic&#xff0c;创建Avatar 模型里面会有对应的Avatar文件 我们还需要一个Controller文件&#xff0c;用于…

VMware虚拟机下载安装教程【超详细】

推荐大佬文章&#xff1a;VMware下载安装教程(超详细)-CSDN博客 目录 一、VMware下载 二、VMware安装 一、VMware下载 1、进入VMware官网 2、点击“Products”&#xff0c;向下滑动 --> 选择“Workstation Pro” 3、向下滑动&#xff0c;找到并选择“Download VMware Wo…

numpy+matplotlib绘制玫瑰线图案

【第10次课]实验十一数据可视化及应用】 声明&#xff1a;著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 1.简答题 本实验绘制简单图形&#xff0c;要导入numpy库函数和matplotlib.pyplot子库函数: import matplotlib.pyplot as plt impor…

【介绍下Android开发环境的搭建】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

源码编译framework.jar 并成功导入android studio 开发

一、不同安卓版本对应路径 Android N/O: 7 和 8 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar Android P/Q: 9 和 10 out/soong/.intermediates/frameworks/base/framework/android_common/combined/framework.jar Android R: 11以上 out/so…

计算机考研到双非院校的性价比分析

我选择读研为自己过渡深造&#xff0c;本科期间没有做过项目和实验&#xff0c;读研期间好好搞 很多公司更加看中的是个人硬实力...双非研究生出去找工作机会也并不少&#xff0c;只要实力够&#xff0c;学历加成一下&#xff0c;机会还是非常多的 研究生的学历算是一个门槛&…
最新文章