VMware Workstation 搭建本地K8S环境(详细完整版)

四月的奥德赛 Kubernetes 451 次浏览 没有评论
  1. 正常安装Ubuntu 20.04 (目前CKA 考试使用的版本是Ubuntu 20.04) ,笔者为了快速一点,安装一台Ubuntu 20.04后,导出做成了ovf模板。模板中笔者开启了使用root账号登录,允许root远程登录。
  2. 导入之后如图

  3. 然后开机,3台虚拟机笔者设置的IP地址为 10.10.75.10/11/12,修改k8s-node1,k8s-node2 的IP地址

    vi /etc/netplan/00-installer-config.yaml

    :wq 保存好之后,netplan apply 应用一下(这个netplan 命令也是Ubuntu 20.04 新的命令)

    同样方法修改好后保存退出后应用一下

     

    用命令hostnamectl set-hostname 修改虚拟机主机名

     

  4. 这个时候,使用MobaXterm工具连接这3台虚拟机

    接着点击上方这个按钮,开启多窗口模式

     

    开启之后如图所示

    虽然上面用命令更改了虚拟机主机名,笔者这边的会话窗口之前就连接了,所以导致3台主机都是root@k8s-master。关闭会话窗口后重新连接就会显示更改后的主机名了。

  5. 接下来修改machine-id,如果是通过虚拟机复制的方法创建另外2台虚拟机的,这个时候Ubuntu 会产生一个相同的 machine-id。虽然不知道这个 machine-id 冲突会造成什么影响 但是记得老师课上讲过 最好还是改一下

    复制一下hostnamectl 然后点击右上角按钮,或者在其中一个窗口中输入,会同时发送到所有窗口中,然后按回车,所有窗口会同时执行

    发现3台虚拟机的 machine id 相同

     

    用命令rm -f /etc/machine-id 删除

    然后用命令systemd-machine-id-setup 自动生成

    最后用命令hostnamectl 查看3台虚拟机Machine ID不一样了

  6. 接着修改OS的源修改为阿里云

    使用多窗口模式用命令vim /etc/apt/sources.list 修改列表,把系统默认的注释掉,然后末尾添加如下地址,添加好之后,:wq保存

    deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

    deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

    deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

    然后用命令执行apt-get update,然后执行 apt-get upgrade

  7. 根据自己的实际环境修改东方瑞通 K8s实战特训营第01天k8sprep.sh脚本中的IP,修好之后用WinSCP上传到3台虚拟机的root目录下

  8. 多窗口模式同时执行命令 sh k8sprep.sh

    执行完成

  9. 执行命令apt-get update

  10. 更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包apt-get install -y apt-transport-https ca-certificates curl

  11. 下载 Google Cloud 公开签名秘钥(阿里源)

    curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg

        添加 Kubernetes apt 仓库

        https://developer.aliyun.com/mirror/kubernetes 阿里云官方配置方法

        

        使用多窗口执行相同的命令

        

  12. 所有节点安装 kubelet、kubeadm、kubectl

     

    做完这一步,可以退出多窗口模式了,剩下的基本在k8s-master主机上操作

     

  13. 初始化 k8s-master 节点(仅在 k8s-master 执 行)(做这一步要退出多窗口模式)

    kubeadm config print init-defaults > init.yaml

    用命令vim init.yaml 修改配置文件,修改好之后保存退出。网址:registry.aliyuncs.com/google_containers

  14. 使用 kubeadmin 初始化 k8s-master 节点

    kubeadm init –config init.yaml | tee $HOME/k8s.txt

    等待一会儿开始执行了

    看到高亮成功字样,然后把这段都复制到txt文本中,等会到执行

        节点初始化成功后,继续执行如下命令

        mkdir -p $HOME/.kube

        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

        sudo chown $(id -u):$(id -g) $HOME/.kube/config

        echo “export KUBECONFIG=/etc/kubernetes/admin.conf” >> /root/.bashrc

        source /root/.bashrc

  15. 执行完成

  16. 部署 calico 网络(仅在 k8s-master 执行)

    部署网络前查看集群状态,此时因为网络问题,状态均异常。

    #查看 node 状态,可以看到此时 master 状态仍然为 NotReady

    kubectl get node

    #查看 pod 状态

    kubectl get pods –namespace=kube-system

  17. 部署 calico

    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

    部署成功,有个告警,不影响。部署结束后等待一段时间,再查看 node 和 pod 状态,若正常则单节点k8s-master 安装成功。

    再次用kubectl get node查看状态,状态从先前的NotReady变为Ready了。说明部署成功了。

    kubectl get pods –namespace=kube-system

  18. 将其它节点加入 k8s-master 中组成集群

    在 k8s-node1 和 k8s-node2 上分别运行初始化 k8smaster 之后的回显

    kubeadm join 10.10.75.10:6443 –token abcdef.0123456789abcdef –discovery-token-ca-cert-hash sha256:c9640c38d244dd3ade91a6c07c7c810611e03685ce264841abb867ca5530969e

  19. 查看 Node 状态和 Pod 状态。(在 k8s-master 执行)

    kubectl get node 说明加入成功

  20. 安装 Dashboard

    编辑 /etc/hosts,添加如下映射关系

    185.199.108.133 raw.githubusercontent.com

    185.199.109.133 raw.githubusercontent.com

    185.199.110.133 raw.githubusercontent.com

    185.199.111.133 raw.githubusercontent.com

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

    安装成功

    kubectl get ns

    kubectl get pod -n kubernetes-dashboard

    kubectl get svc -n kubernetes-dashboard

  21. 修改为 NodePort 方式

    kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard

    修改成如图所示,nodePort是要增加的,type是Cluster IP 改成 NodePort

    查看修改后的配置

  22. 使用 Token 登录 Dashboard

    在浏览器输入地址:NodePort 端口可以用 master 或者 work 节点任 意一 IP+端口方式访问

    获取 Token

    kubectl -n kubernetes-dashboard get sa

    kubectl -n kubernetes-dashboard get secrets

    kubectl -n kubernetes-dashboard describe secrets kubernetes-dashboard-token-jbqgc

     

  23. 配置权限

    验证默认在 Dashboard 中没有相关权限

    设置权限绑定(针对所有命名空间)

    kubectl create clusterrolebinding dashboardadmin –serviceaccount kubernetes-dashboard:kubernetes-dashboard –clusterrole cluster-admin

    验证权限,可以访问任何资源

    设置权限(针对某一命名空间)

    kubectl create rolebinding defaultadmin –serviceaccount kubernetes-dashboard:kubernetes-dashboard –clusterrole cluster-admin

发表评论

Go