• 一、K8S第一步搭建


    一、初始化操作

    • 1.1、关闭防火墙

      systemctl stop firewalld
      systemctl disable firewalld
      
      • 1
      • 2
    • 关闭交换空间

      swapoff -a  # 临时
      sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久
      
      • 1
      • 2

    重启才能生效

    • 根据规划设置主机名

      hostnamectl set-hostname <hostname>
      
      • 1
    • 映射主机

      cat >> /etc/hosts << EOF
      192.168.113.120 k8s-master
      192.168.113.121 k8s-node1
      192.168.113.122 k8s-node2
      EOF
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 安装了docker,需要关闭 Docker 的 cgroups

      vim  /etc/docker/daemon.json
      
      {
        "exec-opts": ["native.cgroupdriver=systemd"]
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5

    二、安装软件

    2.1、k8s下载源设置
    • 更新系统软件包列表并升级已安装的软件包:
    sudo apt update
    sudo apt upgrade -y
    
    • 1
    • 2
    • 添加 Kubernetes 签名密钥:
    curl -O https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg
    
    • 1
    • 将下载的密钥文件导入到系统的 APT 密钥环中:
    sudo apt-key add apt-key.gpg
    
    • 1
    • 添加 Kubernetes 软件包存储库
    vim /etc/apt/sources.list.d/kubernetes.list
    
    • 1
    • 添加如下内容
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    
    • 1
    • 更新软件列表
    sudo apt update
    
    • 1
    2.2、指定版本安装
    • 使用apt安装
    sudo apt install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00
    
    • 1
    • 查看是否安装成功和版本号
    kubelet --version
    kubectl version --shor
    
    • 1
    • 2
    • 禁用自动更新:为了避免通过 APT 自动升级这些组件,可以将它们标记为被锁定状态。执行以下命令禁用自动更新。
    sudo apt-mark hold kubelet kubeadm kubectl
    
    • 1
    • 启动 kubelet 服务:执行以下命令,启动 kubelet 服务。
    systemctl enable kubelet
    
    • 1
    • 查看启动状态
    sudo systemctl status kubelet
    
    • 1
    • 查看日志
    journalctl -xefu kubelet
    
    • 1
    kubeadm reset
    
    • 1

    三、k8s集群配置

    3.1、在主节点执行,集群初始化,并且指定主节点
    kubeadm init \
          --apiserver-advertise-address=192.168.110.100 \
          --image-repository registry.aliyuncs.com/google_containers \
          --kubernetes-version v1.23.6 \
          --service-cidr=10.96.0.0/12 \
          --pod-network-cidr=10.244.0.0/16
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    命令说明
    kubeadm init用于初始化 Kubernetes 集群的命令。它会根据提供的参数配置和创建一个新的 Kubernetes 集群
    apiserver-advertise-address通过该参数指定 kube-apiserver 的发布地址,这是集群中其他节点连接到 master 节点的地址
    image-repository指定使用的容器镜像仓库。
    kubernetes-version过该参数指定要安装的 Kubernetes 版本
    service-cidr指定 Kubernetes 服务的 IP 地址范围。这是 Kubernetes 服务分配的 IP 地址池,用于服务发现和负载均衡。
    pod-network-cidr指定 Pod 网络的 IP 地址范围。这是为 Kubernetes Pod 分配的 IP 地址池,用于容器之间的通信。

    初始化成功后,在后面日志最后会有一段加入集群的命令,例如:

    kubeadm join 192.168.31.100:6443 --token x6v0kg.l40l5kjqapkrycv1 \
    	--discovery-token-ca-cert-hash sha256:343238376e044d3d73edc8739ff07e8a02bc7bc2d68d7dba548df568bba7231b
    
    • 1
    • 2
    3.2、配置API 通信需要使用的身份验证信息
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    #配置完后就可以使用 kubectl get nodes 查看节点信息
    
    • 1
    • 2
    • 3
    • 4
    3.3、节点加入集群

    在子节点上执行命令,加入刚才初始化的集群

    kubeadm join xxx.xxx.xxx.xxx:6443 --token jnhrwg.owebyxwhjd97l4p2 --discovery-token-ca-cert-hash sha256:817b100b0f222826dd8870d9a8700cbdc93f2dce19b38d42b8981462466ca024
    
    • 1
    • 端口号固定,ip填主节点的。

    • token值,可以使用kubeadm token list 查看,或者kubeadm token create 创建一个

    • discovery-token-ca-cert-hash sha256 , 使用如下命令获取,记得拼接sha256:

      openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
      
      • 1
    3.4、配置CNI网络插件

    下载calico配置文件,可能网络会超时, 这个也需要注意下载的目录

    curl https://docs.projectcalico.org/manifests/calico.yaml -O
    
    • 1

    修改 calico.yaml文件中的CALICO_IPV4POOL_CIDR 配置信息,和初始化集群中的cidr 相同

    - name: CALICO_IPV4POOL_CIDR
      value: "10.244.0.0/16"
    
    • 1
    • 2

    查看 calico.yaml 需要的镜像

    grep image calico.yaml
    
    • 1

    他需要的镜像加上了下载源地址,是外网的,下载慢,所以可能需要手动下好,或者去掉下载源

    将文件中的镜像下载地址去除,让使用我们的自己设置的镜像源

    sed -i 's#docker.io/##g' calico.yaml
    
    • 1

    执行calico.yaml文件

    kubectl apply -f calico.yaml
    
    • 1

    执行完可以查看系统的pod启动情况

    kubectl get po -n kube-system
    
    • 1

    其他可能使用到的命令

    
    
    
    • 1
    • 2

    四、使用Nginx测试K8S集群

    1、创建部署

    kubectl create deployment nginx --image=nginx
    
    • 1

    2、暴露端口

    kubectl expose deployment nginx --port=80 --type=NodePort
    
    • 1

    3、查看 pod 以及服务信息

    kubectl get pod,svc
    
    • 1

    4、查看部署信息

    kubectl get deploy
    
    • 1

    5、将ngixn部署扩展为3个

    kubectl scale deploy --replicas=3 nginx
    
    • 1

    6、其他命令

    # 如果发现其他节点一直创建失败,可以先删除指定的pod
    kubectl delete pod nginx-85b98978db-gtppc
    
    #再去查看pod信息的时候,就会发现又开始创建另外一个了
    kubectl get po
    
    # 删除部署的ngin
    kubectl delete deploy nginx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    五、部署常用到的命令

    查看 pods

    kubectl get po
    
    • 1

    查看系统级别的pods信息

    kubectl get po -n kube-system
    
    • 1

    -n 是指命名空间,kube-system是属于k8s自带的

  • 相关阅读:
    【随想】每日两题Day.1
    代码调优?从Fibonacci数列的7种写法说起,看完coding能力上一个台阶
    PowerShell系列(一):PowerShell介绍和cmd命令行的区别
    用户订阅付费如何拆解分析?看这篇就够了
    10张流程图+部署图,讲透单点登录原理与简单实现
    Docker的自定义镜像
    css 高级选择器
    Mac监控键盘输入并执行动作
    _分页查询
    力扣530 补9.12
  • 原文地址:https://blog.csdn.net/qq_39381892/article/details/133848965