【 kubernetes】kubernetes安装

本文详细指导了如何在三台机器上安装和配置Kubernetes集群,包括修改hostname、hosts文件,关闭防火墙和SELinux,设置系统参数,安装kubelet、kubeadm和kubectl,以及解决常见问题如Docker配置和kubectl操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前置条件: 安装docker

1.修改三台机器的hostname及hosts文件

    hostnamectl set-hostname k8s-master
    hostnamectl set-hostname k8s-node1
    hostnamectl set-hostname k8s-node2

cat >>/etc/hosts<<EOF 
192.168.135.129 k8s-master 
192.168.135.130 k8s-node1
192.168.135.131 k8s-node2 
EOF

2.关闭防火墙和关闭SELinux
    systemctl stop firewalld
    systemctl disable firewalld
3.设置系统参数
    设置允许路由转发,不对bridge的数据进行处理
    创建文件
        vi /etc/sysctl.d/k8s.conf
    内容如下:
        net.bridge.bridge-nf-call-ip6tables = 1 
        net.bridge.bridge-nf-call-iptables = 1
        net.ipv4.ip_forward = 1 
        vm.swappiness = 0
    执行文件
        sysctl -p /etc/sysctl.d/k8s.conf

4.kube-proxy 开启ipvs的前置条件
    cat > /etc/sysconfig/modules/ipvs.modules <<EOF
    #!/bin/bash
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack_ipv4
    EOF

    chmod 755 /etc/sysconfig/modules/ipvs.modules && bash
    /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
5.所有节点关闭swap
    swapoff -a 临时关闭
    vi /etc/fstab 永久关闭
    注释掉以下字段
    /dev/mapper/cl-swap swap swap defaults 0 0

6.安装kubelet、kubeadm、kubectl
    kubeadm:  用来初始化集群的指令。
    kubelet:  在集群中的每个节点上用来启动 pod 和 container 等。
    kubectl:  用来与集群通信的命令行工具。

    清空yum缓存
        yum clean all
    设置 yum安装源
        cat <<EOF > /etc/yum.repos.d/kubernetes.repo
        [kubernetes]
        name=Kubernetes
        baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
        enabled=1
        gpgcheck=0
        repo_gpgcheck=0
        gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
        https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
        EOF
    安装
        yum install -y kubelet-1.17.0 kubeadm-1.17.0 kubectl-1.17.0
    kubelet 设置开机启动(注意:先不启动,现在启动的话会报错)
        systemctl enable kubelet
    查看版本
        kubelet --version

7.Master节点需要完成
    1)运行初始化命令
        kubeadm init --kubernetes-version=1.17.0 \
        --apiserver-advertise-address=192.168.135.129 \
        --image-repository registry.aliyuncs.com/google_containers \
        --service-cidr=10.1.0.0/16 \
        --pod-network-cidr=10.244.0.0/16

        注意: apiserver-advertise-address这个地址必须是master机器的IP
               kubernetes-version这个是安装的版本

        常用错误:
            错误一:[WARNING IsDockerSystemdCheck]: detected "cgroupfs" as the Docker cgroup driver
                作为Docker cgroup驱动程序。,Kubernetes推荐的Docker驱动程序是“systemd”
                解决方案:修改Docker的配置: vi /etc/docker/daemon.json,加入
                    {
                        "exec-opts":["native.cgroupdriver=systemd"]
                    }
                然后重启 Docker
            错误二:[ERROR NumCPU]: the number of available CPUs 1 is less than the required 2
                解决方案:修改虚拟机的CPU的个数,至少为2个

        安装过程日志:
            最后,会提示节点安装的命令,必须记下来
                kubeadm join 192.168.66.101:6443 --token 754snw.9xq9cotze1ybwnti \
                  --discovery-token-ca-cert-hash
                sha256:3372ff6717ea5997121213e2c9d63fa7c8cdfb031527e17f2e20254f382ea03a
    2)启动kubelet
        systemctl restart kubelet
    3)配置kubectl工具
        mkdir -p $HOME/.kube
        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        sudo chown $(id -u):$(id -g) $HOME/.kube/config
    4)安装Calico
        1.mkdir k8s
        2.cd k8s
        3.wget https://docs.projectcalico.org/v3.10/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
        4.sed -i 's/192.168.0.0/10.244.0.0/g' calico.yaml
        5.kubectl apply -f calico.yaml
    5)等待几分钟,查看所有Pod的状态,确保所有Pod都是Running状态
        kubectl get pod --all-namespaces -o wide

8.Slave节点需要完成
    1)让所有节点让集群环境
        使用之前Master节点产生的命令加入集群
            kubeadm join 192.168.66.101:6443 --token 754snw.9xq9cotze1ybwnti \
              --discovery-token-ca-cert-hash
            sha256:3372ff6717ea5997121213e2c9d63fa7c8cdfb031527e17f2e20254f382ea03a
        重点: 
        新令牌(要在master节点运行),因为原的令牌有效时间为24小时
            kubeadm token create --print-join-command
    2)启动kubelet
        systemctl start kubelet
    3)回到Master节点查看,如果Status全部为Ready,代表集群环境搭建成功!!!
        kubectl get nodes

9.kubectl常用命令
    kubectl get nodes  查看所有主从节点的状态
    kubectl get ns  获取所有namespace资源
    kubectl get pods -n {$nameSpace} 获取指定namespace的pod
    kubectl describe pod的名称  -n {$nameSpace}  查看某个pod的执行过程
    kubectl logs --tail=1000 pod的名称 | less 查看日志
    kubectl create -f xxx.yml 通过配置文件创建一个集群资源对象
    kubectl delete -f xxx.yml 通过配置文件删除一个集群资源对象
    kubectl delete pod名称 -n {$nameSpace}  通过pod删除集群资源
    kubectl get service -n {$nameSpace}  查看pod的service情况

问题解决:
    1.kubectl delete pod nginx-55f8fd7cfc-4wxzp // 删除后,又重新创建了一个pod,无法删除。
        解决办法:
            先查询deployment: kubectl get deployment
                可以看到一个Nginx,然后,删除这个nginx即可。
                kubectl delete deployment nginx
            再次查看:
                kubectl get deployment
                kubectl get pod

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值