美文网首页
UBUNTU20安装K8S集群

UBUNTU20安装K8S集群

作者: 致维东明 | 来源:发表于2022-11-02 15:53 被阅读0次

    环境初始化

    # 关闭SWAP
    swapoff -a
    rm -f /swap.img
    vim /etc/fstab
    # /swap.img                         注释掉
    
    # 开启IP转发
    vim /etc/sysctl.conf
    net.ipv4.ip_forward=1
    
    # 查看状态
    sysctl -p
    

    安装DOCKER

    step1:安装依赖

    sudo apt-get update
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    

    step2:安装GPG证书

    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    

    step3:写入软件源信息

    sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    

    step4:更新并安装DOCKER-CE->注意:此处可能会报错(参考后面的"遇到的问题")

    sudo apt-get -y update
    apt install -y docker-ce
    

    安装DOCKER-COMPOSE.YML

    apt install -y docker-compose
    

    将DOCKER设置为开机自启

    systemctl enable docker
    

    配置镜像--否则后续DOCKER拉取镜像会很慢!!!

    $ cat > /etc/docker/daemon.json << EOF
    {
      "registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"]
    }
    EOF
    

    DOCKER版本

    root@master:/# docker --version
    Docker version 20.10.20, build 9fdeb9c
    

    安装K8S

    添加证书

    curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
    

    添加APT源

    cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
    EOF
    
    apt-get update
    

    查看可安装版本

    apt-cache madison kubelet
    

    安装指定版本

    apt-get install -y kubelet=1.18.4-00 kubeadm=1.18.4-00 kubectl=1.18.4-00
    

    设置开机启动

    sudo systemctl enable kubelet && sudo systemctl start kubelet
    

    查看所需镜像

    kubeadm config images list --kubernetes-version=v1.18.4
    
    k8s.gcr.io/kube-apiserver:v1.18.4
    k8s.gcr.io/kube-controller-manager:v1.18.4
    k8s.gcr.io/kube-scheduler:v1.18.4
    k8s.gcr.io/kube-proxy:v1.18.4
    k8s.gcr.io/pause:3.2
    k8s.gcr.io/etcd:3.4.3-0
    k8s.gcr.io/coredns:1.6.7
    

    从新地址下载镜像(将上面的地址换成下面的)

    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.4
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.4
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.4
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.4
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
    

    为镜像重新打TAG(重新命名上面拉取的镜像)

    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.4 k8s.gcr.io/kube-apiserver:v1.18.4
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.4 k8s.gcr.io/kube-controller-manager:v1.18.4
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.4 k8s.gcr.io/kube-scheduler:v1.18.4
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.4 k8s.gcr.io/kube-proxy:v1.18.4
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7
    

    初始化MASTER节点

    kubeadm init --kubernetes-version=v1.18.4 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
    

    初始化完成之后会出现提示,之后将后面的内容保存到一个文件中,先不添加节点检查集群状态是否正常。

    Your Kubernetes control-plane has initialized successfully!             # 安装成功的提示
    
    To start using your cluster, you need to run the following as a regular user:
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
    Then you can join any number of worker nodes by running the following on each as root:
    
    kubeadm join 192.168.93.136:6443 --token vvd4zg.4ay8rxanmh7fopec \
        --discovery-token-ca-cert-hash sha256:df77248c6939eb6c6062d50e6e99c4f881f48e619ef4d2e61304a529a4c2eb1f 
    

    此时执行命令会报如下错误,需要设置环境变量:

    The connection to the server localhost:8080 was refused - did you specify the right host or port?
    

    具体根据情况,此处记录LINUX设置该环境变量
    方式一:编辑文件设置

    vim /etc/profile
    

    在底部增加新的环境变量:export KUBECONFIG=/etc/kubernetes/admin.conf
    方式二:直接追加文件内容

    echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
    

    使生效

    source /etc/profile
    
    root@master:/# kubectl get componentstatus
    NAME                 STATUS    MESSAGE             ERROR
    controller-manager   Healthy   ok                  
    scheduler            Healthy   ok                  
    etcd-0               Healthy   {"health":"true"} 
    
    root@master:/home/xieming# kubectl get nodes
    NAME     STATUS   ROLES    AGE     VERSION
    master   Ready    master   26m     v1.18.4
    node1    Ready    <none>   2m27s   v1.18.4
    node2    Ready    <none>   2m25s   v1.18.4
    node3    Ready    <none>   2m27s   v1.18.4
    

    添加CNI网络组件--可能无法下载(国外地址需要翻墙)

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

    检查状态

    kubectl get pods -n kube-system -l app=flannel              ???过时了--命名空间变了
    
    root@master:~/kubernetes# kubectl get pods -n kube-flannel
    NAME                    READY   STATUS    RESTARTS   AGE
    kube-flannel-ds-6sr4s   1/1     Running   1          2d
    kube-flannel-ds-gcsxl   1/1     Running   1          2d
    kube-flannel-ds-qg9mc   1/1     Running   1          2d
    kube-flannel-ds-tdpp5   1/1     Running   1          2d
    root@master:~/kubernetes# kubectl get pods -n kube-system
    NAME                             READY   STATUS    RESTARTS   AGE
    coredns-66bff467f8-dlj8c         1/1     Running   1          2d
    coredns-66bff467f8-g4z94         1/1     Running   1          2d
    etcd-master                      1/1     Running   1          2d
    kube-apiserver-master            1/1     Running   1          2d
    kube-controller-manager-master   1/1     Running   1          2d
    kube-proxy-25n7c                 1/1     Running   1          2d
    kube-proxy-6l5bn                 1/1     Running   1          2d
    kube-proxy-l7hm8                 1/1     Running   1          2d
    kube-proxy-xgcjt                 1/1     Running   1          2d
    kube-scheduler-master            1/1     Running   1          2d
    

    检查节点是否准备完成

    kubectl get nodes
    

    为NODE的角色打标签

    kubectl label node node01 node-role.kubernetes.io/node=node
    

    测试KUBERNETES集群

    在KUBERNETES集群中创建一个POD,验证是否正常运行:

    root@master:~/kubernetes# kubectl create deployment nginx --image=nginx
    deployment.apps/nginx created
    root@master:~/kubernetes# kubectl expose deployment nginx --port=80 --type=NodePort
    service/nginx exposed
    
    root@master:~/kubernetes# kubectl get pod,svc
    NAME                        READY   STATUS    RESTARTS   AGE
    pod/nginx-f89759699-5kscr   1/1     Running   0          13m
    
    NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
    service/kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        2d
    service/nginx        NodePort    10.107.128.217   <none>        80:31788/TCP   2m36s
    

    访问地址:http://nodeip:port

    遇到的问题

    1. 解决UBUNTU20.04安装DOCKER时设置仓库失败问题
    E: Failed to fetch https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/focal/stable/binary-amd64/Packages.bz2  File has unexpected size (19784 != 18519). Mirror sync in progress? [IP: 119.188.122.238 443]
       Hashes of expected file:
        - Filesize:18519 [weak]
        - SHA512:25ae8d060506d811c6e53f43b08e3bc9a95de020606dae54e5f8770384b50cbbde50307085d66d2020e10431025331e788ba0e4208f734fc8cfafe18b1f0bcff
        - SHA256:bff1fb7605fad668dc36da2a8ab9e8c864d48266d2859c35bd51ad38247181ff
        - SHA1:836ec0a727741aebd12b599656dc715b830a6dfe [weak]
        - MD5Sum:9d0854226ca04178e142c0bb32139451 [weak]
       Release file created at: Wed, 05 Oct 2022 15:08:31 +0000
    E: Some index files failed to download. They have been ignored, or old ones used instead.
    
    或
    
    Err:5 https://download.docker.com/linux/ubuntu focal Release                          
      404  Not Found [IP: 13.249.173.43 443]
    

    解决办法:

    vim /etc/apt/sources.list
    # deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu focal stable
    deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable
    或
    deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable
    

    相关文章

      网友评论

          本文标题:UBUNTU20安装K8S集群

          本文链接:https://www.haomeiwen.com/subject/smpjtdtx.html