k8s(十)安装K8s集群之node

160 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

上一节主要讲解了怎么安装Matser节点,那么这一节,将带领大家怎么安装Node节点,

Node

  1. 配置环境,参考Master

  2. 安装containerd,参考Master

  3. 安装kubectl、kubelet、kubeadm工具,参考Master

  4. 安装网络插件,参考Master

    #设置crictl
    cat << EOF >> /etc/crictl.yaml
    runtime-endpoint: unix:///var/run/containerd/containerd.sock
    image-endpoint: unix:///var/run/containerd/containerd.sock
    timeout: 10 
    debug: false
    EOF
    ​
    ​
    # 拉取镜像
    crictl pull registry.aliyuncs.com/google_containers/kube-proxy:v1.23.1
    crictl pull registry.aliyuncs.com/google_containers/pause:3.6
    ​
    ctr -n k8s.io i ls -q
    ​
    crictl images
    ​
    crictl ps -a
    ​
    mkdir -p $HOME/.kube
    sudo cp -i master:/etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    ​
    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

Join

join操作将slaver节点加入到集群中。

  1. 生成永久token,生成的token类似:q7zp90.hywock1tphsdrvkq,然后他就会生成一条默认的join语句。

    kubeadm token create --ttl 0 --print-join-command
    

    使用kubeadm token list查看所有token

    [root@master k8s]# kubeadm token list
    TOKEN                     TTL         EXPIRES   USAGES                   DESCRIPTION                                                EXTRA GROUPS
    q7zp90.hywock1tphsdrvkq   <forever>   <never>   authentication,signing   <none>                                                     system:bootstrappers:kubeadm:default-node-token
    
  2. 进行join

    使用第一步生成join语句直接在node节点上执行

    kubeadm join 8.16.0.67:6443 --token q7zp90.hywock1tphsdrvkq     --discovery-token-ca-cert-hash sha256:266cfd8963dbefe1cfa0b2c965896d185182133b908d2d24c6f214356e1822fc 
    

    认证方式参考:kubeadm join

    测试

至此大功就告成啦。🎉🎉🎉

可以采用kubectl get node -o wide命令查看所有节点

[root@master k8s]# kubectl get node
NAME     STATUS   ROLES                  AGE   VERSION
master   Ready    control-plane,master   2d    v1.23.1
slaver   Ready    <none>                 44h   v1.23.1

那就安装一个nginx来测试一下吧。

创建一个nginx的deployment并且将其expose对外暴露。

kubectl create deployment nginx --image=nginx
​
kubectl expose deployment nginx --port=80 --type=NodePort

等待一段时间,安装完成后,deployment、pod、service将会各生成一个。

使用kubectl get svc,pod,deploy -o wide便可查看

[root@master k8s]# kubectl get svc,pod,deploy
NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        2d
service/nginx        NodePort    10.109.59.210   <none>        80:31732/TCP   33h
​
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-85b98978db-9z9ck   1/1     Running   0          33h
​
NAME                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx   1/1     1            1           33h

访问nginx地址,成功

image.png