K8s初次入门

embedded/2024/9/24 16:30:42/

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/embedded/19253.html

相关文章

【Python进阶实战】Flask接口并发实战

【Python进阶实战】Flask接口并发实现 前言Flask阻塞接口接口实现接口阻塞 Flask并发接口接口实现接口并发 服务部署Windows部署Linux部署gunicorn安装gunicorn运行 结语 前言 Python版本&#xff1a;3.12.3 IDE&#xff1a;Pycharm 2024.1 对于Flask接口阻塞问题&#xff0…

「ChatGPT」掀起新一轮AI热潮!超越GPT-4 Turbo,商汤日日新大升级!

目录 拳打 GPT-4 Turbo &#xff0c;脚踢 DALLE 3 端侧大模型&#xff0c;唯快不破 AI 应用落地需要一个即插即用的大模型超市 并不存在 AI 这个行业&#xff0c;只有 AI行业&#xff0c;强调 AI 需要与传统产业合作&#xff0c;这种关系是结合与赋能&#xff0c;而不是颠覆…

Rust序列化和反序列化

Rust 编写python 模块 必备库 docker 启动 nginx 服务 NGINX 反向代理配置

【iOS开发】(六)react Native 路由嵌套传参与框架原理(完)20240423

【iOS开发】(六)react Native 路由嵌套传参与框架原理&#xff08;完&#xff09;20240423 感谢拉钩教育的教学。 &#xff08;五&#xff09;我们介绍了四种路由导航&#xff0c;这一节我们介绍他们的嵌套传参和框架的整体原理。到这里&#xff0c;大家已经能用RN框架进行一些…

架构师系列- 消息中间件(13)-kafka深入应用

4、深入应用 4.1 springboot-kafka 1&#xff09;配置文件 kafka:bootstrap-servers: 192.168.10.30:10903,192.168.10.30:10904producer: # producer 生产者retries: 0 # 重试次数acks: 1 # 应答级别:多少个分区副本备份完成时向生产者发送ack确认(可选0、1、all/-1)batch-s…

Vue.js(Axios)

Axios 什么是: Axios 是一个基于 promise 的 HTTP 库&#xff0c;可以用在浏览器和 node.js 中 何时: 主要用于创建请求在浏览器中&#xff0c;创建xhr请求&#xff1b; 在node.js中&#xff0c;创建普通http请求 为什么: 浏览器中创建xhr请求: 4种方案: (1)使用原生XHR对象—…

C++ Primer Plus

第一章 初始C #include <iostream> //#:预处理int main(void) //void:无参数 {using namespace std;int carrots; //定义声明语句:开辟内存空间&#xff0c; int:整型 cout << "how many corrots do you have?" << endl; //cout:输出流(out) end…

JPEG图像常用加密算法简介

JPEG图像加密算法 目前&#xff0c;JPEG图像加密算法可以分成异或加密、置乱加密和置乱与异或组合加密。下面对这三种加密方式进行阐述。 (1) 异或加密 文献[1]提出了一种基于异或加密的JPEG图像的RDH-EI方案。该算法通过对AC系数的ACA和图像的量化表进行流密码异或&#xf…