二. k8s搭建

快速搭建

  1. 安装要求
    在开始之前,部署Kubernetes集群机器需要满足以下几个条件:
    3台以上机器,操作系统 CentOS7.7以上64位系统
    硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘20GB或更多
    集群中所有机器之间网络互通
    可以访问外网,需要拉取镜像
    禁止swap分区
  2. 部署内容
    kubernetes1.28.0版本,docker21.1.1版本
    在所有节点上安装Docker和kubeadm,kubenet
    部署Kubernetes Master
    部署容器网络插件
    部署 Kubernetes Node,将节点加入Kubernetes集群中
  3. 准备环境
    这里我准备了三台虚拟机,都是centos7的镜像,推荐大家使用远程工具MobaXterm连接,方便我们操作虚拟机
    ip: 192.168.230.167 主机名:k8s-master 配置:2核2G 20G
    ip: 192.168.230.168 主机名:k8s-node1 配置:2核2G 20G
    ip: 192.168.230.169 主机名:k8s-node2 配置:2核2G 20G
    配置静态ip
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    把dhcp改成static //这里是动态变静态
    在文件最下方添加
    IPADDR=192.168.230.167 //这是我masterip
    NETMASk=255.255.255.0 //这是子网掩码
    GATEWAY=192.168.230.2 //这是网关
    DNS1=8.8.8.8 //这是域名解析器
  4. 开始搭建
    这里我们用MobaXterm连接虚拟机,三台同时操作

     在master主机添加hosts
     cat >> /etc/hosts << EOF
     192.168.230.167 k8s-master
     192.168.230.168 k8s-node1
     192.168.230.169 k8s-node2
     EOF
     关闭防火墙
     systemctl stop firewalld
     systemctl disable firewalld
     禁用iptables
     systemctl stop iptables
     systemctl disable iptables
     关闭selinux
     sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
     setenforce 0  # 临时
     关闭swap
     swapoff -a  # 临时
     sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久
     # 将桥接的IPv4流量传递到iptables的链
     cat < /etc/sysconfig/modules/ipvs.modules
    #!/bin/bash
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack_ipv4
    EOF
    # 为脚本文件添加执行权限
    chmod +x /etc/sysconfig/modules/ipvs.modules
    # 执行脚本文件
    /bin/bash /etc/sysconfig/modules/ipvs.modules
    # 查看对应的模块是否加载成功
    lsmod | grep -e ip_vs -e nf_conntrack_ipv4
    # 时间同步
     yum install ntpdate -y
     ntpdate time.windows.com
     注意:虚拟机不管关机还是挂起,每次重新操作都需要更新时间进行同步。
     #reboot重启
  5. 三个节点安装Docker/kubeadm/kubelet

    dokcer安装
    #安装docker以及依赖库
     sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    # 启动docker
     sudo systemctl start docker
    # 设置docker开机启动
     sudo systemctl enable docker
    # 验证出现  running即成功
     sudo systemctl status docker
    #安装cri-dockerd
     k8s 1.24版本后需要使用cri-dockerd和docker通信
     #下载cri-dockerd 
     # 若没有wget,则执行
     sudo yum install -y wget
     # 下载(建议开个加速外网的,不然下载不了)
     sudo wgethttps://github.com/Mirantis/cri- dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4-3.el7.x86_64.rpm
     # 安装
     sudo rpm -ivh cri-dockerd-0.3.4-3.el7.x86_64.rpm
     # 重载系统守护进程
     sudo systemctl daemon-reload
     #设置镜像加速
     sudo tee /etc/docker/daemon.json <<-'EOF'
    {
     "registry-mirrors":  ["https://c12xt3od.mirror.aliyuncs.com"]
     }
     EOF
     #修改配置文件
     vi /usr/lib/systemd/system/cri-docker.service
     修改第十行改为    ExecStart=/usr/bin/cri-dockerd --network-   plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7
    # 重载系统守护进程
    sudo systemctl daemon-reload
    # 设置cri-dockerd自启动
    sudo systemctl enable cri-docker.socket cri-docker
    # 启动cri-dockerd
    sudo systemctl start cri-docker.socket cri-docker
    # 检查Docker组件状态
    sudo systemctl status docker cir-docker.socket cri-docker
     安装Kubelet,kubeadm,kubectl
     yum install -y kubelet-1.28.0 kubeadm-1.28.0 kubectl-1.28.0
    #安装runc(所有节点执行)
    # 下载 runc.amd64(建议开外网加速,不然很慢)
    sudo wget https://github.com/opencontainers/runc/releases/download/v1.1.9/runc.amd64
    # 安装
    sudo install -m 755 runc.amd64 /usr/local/bin/runc
    # 验证
    runc -v
    6.  部署集群
    **初始化集群,只在master节点**
     kubeadm init  --node-name=k8s-master --image-repository=registry.aliyuncs.com/google_containers --cri-socket=unix:///var/run/cri-dockerd.sock --apiserver-advertise-address=192.168.230.167 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
     --apiserver-advertise-address 集群通告地址,也就是masterip
    --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
    --kubernetes-version K8s版本,与上面安装的一致
    --service-cidr 集群内部虚拟网络,Pod统一访问入口
    --pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致
    # 初始化成功后运行下面的命令 
     mkdir -p $HOME/.kube
     sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
     sudo chown $(id -u):$(id -g) $HOME/.kube/config
     # master节点执行 配置文件的复制(为了在node节点可以使用kubectl相关命令)
     scp /etc/kubernetes/admin.conf 192.168.230.168:/etc/kubernetes/
     scp /etc/kubernetes/admin.conf    192.168.230.169:/etc/kubernetes/
     #node节点
     # 到node节点检查admin.conf文件是否传输完成
      ls /etc/kubernetes/
      显示admin.conf  manifests
    # 将admin.conf加入环境变量,直接使用永久生效
    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >>  ~/.bash_profile
    # 加载
    source ~/.bash_profile
    
     # ---------------------------------加入集群-------------------------------------
     #在master节点执行 kubeadm init成功后,会出现 kubeadm join xxx xxx的命令,直接复制到node节点执行就好。
     #下面是若没有复制到kubeadm join的命令或者是想要在集群中加入新节点,
     #则先在master执行,获取token 和 discovery-token-ca-cert-hash。
     #获取 token 参数
     kubeadm token list   # 查看已有 token
     kubeadm token create # 没有token则执行,创建新的 TOKEN
     #获取 discovery-token-ca-cert-hash 参数 
     openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null |  openssl dgst -sha256 -hex | sed 's/^.* //'
    #node节点执行 kubeadm join
    # 修改获取的 token 和 discovery-token-ca-cert-hash 后,再执行
    kubeadm join 192.168.230.167:6443 --token 1qetgz.ugw5whz9fl8yvf3r --discovery-token-ca-cert-hash sha256:802271a2c3f17e3df09b2054b9f21e3dffea1ea9e87ac20bd5765736812d78b8 --cri-socket unix:///var/run/cri-dockerd.sock
    #安装flannel插件(轻量级用于快速搭建使用,初学推荐,开外网加速下载)
     sudo wget https://github.com/flannel-io/flannel/releases/download/v0.22.3/kube-flannel.yml
    # 执行
     kubectl apply -f kube-flannel.yml
     测试集群
     # 下面一般在master节点执行,若node节点可以使用kubectl命令,也可以在node节点上操作
    kubectl get nodes
    kubectl get pod -A
    使用nginx测试
    vi nginx-deployment.yaml
    #这是写入的代码
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: nginx-deployment
    spec:
    replicas: 3
    selector:
    matchLabels:
    app: nginx
    template:
      metadata:
      labels:
      app: nginx
     spec:
     containers:
    - name: nginx
      image: nginx:latest
      ports:
        - containerPort: 80
    apiVersion: v1
    kind: Service
    metadata:
    name: nginx-service
    spec:
    selector:
    app: nginx
    ports:
    -name: http
    port: 80
    targetPort: 80
    nodePort: 30080
    type: NodePort
    #运行
     kubectl apply -f nginx-deployment.yaml
     kubectl get pod,svc |grep nginx

    7.访问网站nginx(自己的ip+刚刚写的30080)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇