K8s初次入门

devtools/2024/9/23 1:36:10/

k8s_6">初步:搭建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_165">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.ppmy.cn/devtools/25360.html

相关文章

【Docker学习】docker stop深入研究

本想将stop、start、restart、kill、pause、unpause这几个命令一起打包学习&#xff0c;但使用stop的过程中发现了一些可深入探讨的课题&#xff0c;因此这次只说docker stop。 命令&#xff1a; docker container stop 描述&#xff1a; 停止一个或多个运行中的容器。容器内的…

Linux已安装virtualenv 但还是报 bash: virtualenv: command not found 错误原因及解决

场景 在 linux 上已经安装了python和 virtualenv &#xff0c;但是直接执行 virtualenv 相关的指令创建虚拟环境还是失败并且报错 bash: virtualenv: command not found 原因 虽然手动安装了virtualenv 没有自动配置 virtualenv 的软连接 解决方式 手动在安装目录下去执行…

【c++】优先级队列与仿函数:C++编程的强大组合

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff0c;本篇文章我们来讲解优先级队列priority_queue 目录 1.priority_queue的介绍和使用函数使用仿函数的使用与介绍greater和less 2.priority_queue的模拟实现基本框架…

国产数据库-达梦数据库sql语句如何编写alter语句,原来和mysql数据库的语法不一致,特殊

国产数据库-达梦数据库sql语句如何编写alter语句&#xff0c;原来和mysql数据库的语法不一致&#xff0c;特殊 最近在使用国产数据库&#xff0c;达梦数据库&#xff0c;要修改别人的建表语句。 使用到alter语句。发下和mysql的语法有些不一样。 如下&#xff1a; 第一次建表…

Linux通过命令查看系统时间

Linux通过命令查看系统时间 查看Linux系统的时间查看Linux系统的时区 查看Linux系统的时间 查看时间和日期 date设置时间和日期 例1&#xff1a;将系统日期设定成2024年11月11日的命令 命令 &#xff1a; date -s 11/11/2024例2&#xff1a;将系统时间设定成下午2点12分12秒…

ShardingSphere 5.x 系列【25】 数据分片原理之 SQL 解析

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 分片执行流程1.1 Simple Push Down1.2 SQL Federation2. SQL 解析2.1 解析…

VScode调用devcpp编译

打开环境变量&#xff0c;用户和系统都可以&#xff0c;只是给的权限不一样而已&#xff0c;个人pc一般不会设置多个用户 找到path双击 新建一个&#xff0c;把你的dev的MinGW64\bin路径粘贴过去 然后重启电脑&#xff0c;VScode要重启电脑才能加载新的环境变量 打开VScode&a…

css设置子元素在父元素中水平垂直居中

css设置子元素在父元素中水平垂直居中 1. 第一种方式&#xff1a;使用Flexbox布局2. 第二种方式&#xff1a;使用绝对定位3. 第三种方式&#xff1a;使用表格布局4. 第四种方式&#xff1a;使用绝对定位和负边距 1. 第一种方式&#xff1a;使用Flexbox布局 设置父元素的样式为…