Kubernetes集群安装以及dashboard安装配置

本文详细介绍了如何在 CentOS 系统上搭建 Kubernetes 集群,包括 Master 和 Slave 节点的配置,Docker 的安装,Kubernetes 的安装,以及 Dashboard 的部署和访问。过程中涉及到关闭 SELinux 和 swap,设置防火墙,安装 flannel 网络插件等关键步骤,并提供了错误解决参考。

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

准备

192.168.100.111 Master
192.168.100.112 Slave1
192.168.100.113 Slave2

一、安装docker

#安装docker的yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#刷新缓存
yum makecache

#安装docker(--allowerasing 替换掉冲突的包)
yum -y install docker-ce-19.03.15 --allowerasing

#启动docker服务
systemctl enable docker && systemctl start docker

#运行docker的hello-world
docker run hello-world

二、安装Kubernates

1.编辑Kubernetes的yum源

 vim /etc/yum.repos.d/Kubernetes.repo

内容如下:

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

2、安装启动

  1. 关闭seliunx

    #临时关闭
    setenforce 0
    
    #修改配置文件关闭 永久关闭
    setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    
  2. 关闭swap

    #临时关闭 
    swapoff -a 
    
    #修改配置文件 永久关闭
    swapoff -a && sed -ri 's/.*swap.*/#&/' /etc/fstab
    
    #查看
    free 
    
  3. 关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    

    不然会报以下错误在这里插入图片描述

    #安装
    yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
    
    #启动
    systemctl enable kubelet && systemctl start kubelet
    

三、配置Master节点

1、初始化Master节点

kubeadm init --kubernetes-version=1.20.0 --apiserver-advertise-address=192.168.100.111 --image-repository registry.aliyuncs.com/google_containers --service-cidr=10.20.0.0/16 --pod-network-cidr=10.244.0.0/16

其中--apiserver-advertise-address是本机地址
--pod-network-cidr=10.244.0.0/16要与kube-flannel.yml里的net-conf.json地址一致

2、完成配置

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

3、更改cgroupdriver

  1. docker

    vim /etc/docker/daemon.json
    
    {
    	"exec-opts": ["native.cgroupdriver=systemd"]
    }
    
    systemctl daemon-reload
    systemctl restart docker
    
  2. kubelet

    vim /var/lib/kubelet/config.yaml
    
    cgroupDriver: systemd        #将该字段的cgroupfs修改为systemd
    

四、配置Slave节点

1、启动Slave

  1. 通过步骤 一、安装docker二、安装Kubernates
    在Master节点执行kubeadm token create --print-join-command:
    得到加入Master的命令
    在获取到Master上的kubeadm join参数后,就可以登录Node进行初始化,加入集群。具体命令及参数在Master安装成功界面上已经给出提示,如下所示。
    [root@node-111 ~]# kubeadm token create --print-join-command
    kubeadm join 192.168.100.111:6443 --token sc2db6.kkkca6ykgvnh196m     --discovery-token-ca-cert-hash sha256:2167903863b3493c2712524268b6c964b0c0d0d16d70dba52d4b07cd23d87e5c 
    
  2. 在分别在Slave1、Slave2节点直接执行上述命令
    kubeadm join 192.168.100.111:6443 --token sc2db6.kkkca6ykgvnh196m     --discovery-token-ca-cert-hash sha256:2167903863b3493c2712524268b6c964b0c0d0d16d70dba52d4b07cd23d87e5c 
    

五、后续配置

1、查看节点状态

[root@node-111 ~]# kubectl get nodes
NAME       STATUS     ROLES                  AGE     VERSION
node-111   NotReady   control-plane,master   3h51m   v1.20.0
node-112   NotReady   <none>                 73m     v1.20.0
node-113   NotReady   <none>                 3m8s    v1.20.0

可以看到现在节点状态都是NotReady状态;

2、查看kube-system下各个Pod的状态

运行kubectl get pod --namespace=kube-system命令:

[root@node-111 ~]# kubectl get pod --namespace=kube-system
NAME                               READY   STATUS    RESTARTS   AGE
coredns-7f89b7bc75-4f5bp           0/1     Pending   0          3h57m
coredns-7f89b7bc75-vjs9x           0/1     Pending   0          3h57m
etcd-node-111                      1/1     Running   0          3h57m
kube-apiserver-node-111            1/1     Running   0          3h57m
kube-controller-manager-node-111   1/1     Running   0          3h57m
kube-proxy-2b7vz                   1/1     Running   0          9m14s
kube-proxy-94gmp                   1/1     Running   0          3h57m
kube-proxy-hsbzc                   1/1     Running   0          79m
kube-scheduler-node-111            1/1     Running   0          3h57m

可以看到corednsPending状态

3、安装flannel

接下来,解决coredns的问题,这是由于还没有安装网络组件而造成的。本例中选择使用Flannel,因此需要在各个节点部署Flannel,具体命令如下:

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

由于国内网络问题,可以才去下面的离线模式

  1. 新建kube-flannel.yml

    vim kube-flannel.yml
    

    内容如下:
    kube-flannel.yml

  2. 下载flannel docker镜像

    地址:
    https://github.com/flannel-io/flannel/releases/download/v0.18.1/flanneld-v0.18.1-amd64.docker
    上传至服务器/mnt/flanneld-v0.18.1-amd64.docker 
    执行:
    [root@node-111 ~]# docker load < /mnt/flanneld-v0.18.1-amd64.docker 
    Loaded image: flannelcni/flannel:v0.18.1-amd64
    
  3. 重命名

    docker tag flannelcni/flannel:v0.18.1-amd64 quay.io/coreos/flannel:v0.18.1-amd64
    
  4. 安装flannel插件

    kubectl apply -f kube-flannel.yml
    

六、管理台安装:

1、在线安装

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

2、如果网络不通可以离线安装

  1. 编辑安装配置文件

    vim recommended.yaml
    

    加入以下内容

    recommended.yaml

  2. 安装

    kubectl apply -f recommended.yaml
    
  3. 查看安装

    [root@node-111 ~]# kubectl get svc --all-namespaces
    NAMESPACE              NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                  AGE
    default                kubernetes                  ClusterIP   10.20.0.1      <none>        443/TCP                  81m
    kube-system            kube-dns                    ClusterIP   10.20.0.10     <none>        53/UDP,53/TCP,9153/TCP   81m
    kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.20.82.88    <none>        8000/TCP                 25m
    kubernetes-dashboard   kubernetes-dashboard        ClusterIP   10.20.89.158   <none>        443/TCP                  25m
    

    删除现有的dashboard服务,dashboard 服务的 namespace 是 kubernetes-dashboard,但是该服务的类型是ClusterIP,不便于我们通过 浏览器访问,因此需要改成NodePort型的

    #删除安装
    kubectl delete service kubernetes-dashboard --namespace=kubernetes-dashboard
    
  4. 创建配置文件

    vim dashboard-svc.yaml
    
    # 内容
    kind: Service
    apiVersion: v1
    metadata:
     labels:
       k8s-app: kubernetes-dashboard
     name: kubernetes-dashboard
     namespace: kubernetes-dashboard
    spec:
     type: NodePort
     ports:
       - port: 443
         targetPort: 8443
     selector:
       k8s-app: kubernetes-dashboard
    
    # 执行
    kubectl apply -f dashboard-svc.yaml
    
  5. 再次查看服务,成功(注意POST为31717,登录的端口)

    [root@node-111 ~]# kubectl get svc --all-namespaces
    NAMESPACE              NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
    default                kubernetes                  ClusterIP   10.20.0.1       <none>        443/TCP                  86m
    kube-system            kube-dns                    ClusterIP   10.20.0.10      <none>        53/UDP,53/TCP,9153/TCP   86m
    kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.20.82.88     <none>        8000/TCP                 31m
    kubernetes-dashboard   kubernetes-dashboard        NodePort    10.20.200.185   <none>        443:31717/TCP            10s
    
  6. 想要访问dashboard服务,就要有访问权限,创建kubernetes-dashboard管理员角色

    vim dashboard-svc-account.yaml
    
    # 结果
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: dashboard-admin
      namespace: kube-system
    ---
    kind: ClusterRoleBinding
    apiVersion: rbac.authorization.k8s.io/v1
    metadata:
      name: dashboard-admin
    subjects:
      - kind: ServiceAccount
        name: dashboard-admin
        namespace: kube-system
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    
    
    # 执行
    kubectl apply -f dashboard-svc-account.yaml
    
  7. 获取token

    [root@node-111 ~]# kubectl get secret -n kube-system |grep admin|awk '{print $1}'
    dashboard-admin-token-tgfpn
    
    #复制下面的token登录要用
    [root@node-111 ~]# kubectl describe secret dashboard-admin-token-tgfpn -n kube-system|grep '^token'|awk '{print $2}'
    eyJhbGciOiJSUzI1NiIsImtpZCI6IlYzM1BiOVpYVzhLcGZzUkVUTS1YcmstUkhmZTNpWG1maHdiMENtdjY2dmsifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tdGdmcG4iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZDQzMDVhYzUtMDcyYy00ZTZhLWJlMGMtYThkZDg0ODA2ZmQ4Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.M5k7LwWq-ILaC2vcTtZT_fDdwGBgnDtr5UGzo_pcIJclnex8VCZfLEIHHA6yjULWmH9d6Yf760RrH9xiizGIzh4S8QK5Xu2sDI-WHYalv_EdodsPmwz5im__37GlPw7O3thj1l34T0zNQWiE4FDK0f1uP1Heykv4RIjvFeEVcED9-eViVl37H5MseUCvO6bGgDkOjjOjy2I3MfJC7c7wN6NNn5vfTMNKXFmK5teU6orPAqGapwzHg8ENJGuZIwoLmzDHadMqw5qBOS1T_tMyTZkBSucGWPriarkDIPG24f_atEYX5sNssthBB-Q0Y5Il_XS21g7bKfMSbQORqbOJDQ
    
    
  8. 访问https://192.168.100.111:31717
    把上面的 token 粘贴到令牌:
    在这里插入图片描述

    在这里插入图片描述

七、常用命令

  1. kubectl get pod --all-namespaces -o wide查看所有的pod
  2. kubeadm reset重置节点
  3. kubectl get nodes查看所有节点状态
  4. journalctl -xeu kubelet查看运行日志
  5. kubectl describe pods [PodName] --namespace=[NameSpace] 查看pod详情
  6. kubectl get svc --all-namespaces查看所有的svc

八、报错解决

kubeadm init 报错 ”unknown service runtime.v1alpha2.RuntimeService”
https://blog.csdn.net/weixin_40668374/article/details/124849090

参考

K8S 安装 Dashboard

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子非鱼yy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值