Mac下基于Multipass虚拟机部署Kubernetes集群及常用组件

  • 主机配置
    配置项目配置参数
    OSUbuntu 20.04.4 LTS
    CPU2核
    RAM2G
    Storage40G
  • 网络配置
    主机名ipv4 地址
    k8s-master192.168.64.8
    k8s-node01192.168.64.9
    k8s-node02192.168.64.10
  • 软件版本
    软件名版本号
    Docker CEv20.10.5
    Kubernetesv1.23.6
    Dashboardv2.5.1
    ingress-nginxv1.1.0
    metrics-serverv0.5.2
  • 常用网址

一、环境准备

  1. 安装 Multipass
    下载地址
  2. 创建虚拟机
    multipass launch --name k8s-master --cpus 2 --mem 2048M --disk 40G
    multipass launch --name k8s-node01 --cpus 2 --mem 2048M --disk 40G
    multipass launch --name k8s-node02 --cpus 2 --mem 2048M --disk 40G
    
    在这里插入图片描述
  3. 环境初始化
    以 k8s-master为例,k8s-node01与k8s-node02操作相同,不做赘述。
    1. 进入虚拟机
      multipass shell k8s-master
      
    2. 设置root密码
      sudo passwd
      
    3. 主机名解析
      sudo vim /etc/cloud/cloud.cfg
      
      注释如下两行:
      # - update_hostname
      # - update_etc_hosts
      
      加入解析:
      sudo vim /etc/hosts
      
      192.168.64.8 k8s-master 
      192.168.64.9 k8s-node01 
      192.168.64.10 k8s-node02
      
      此时各个虚拟机之间应该可以相互ping通:
      在这里插入图片描述
    4. 同步时区
       sudo timedatectl set-timezone Asia/Shanghai
       sudo systemctl restart rsyslog
      
    5. 禁用防火墙
       sudo ufw disable
      
    6. 禁止 swap 分区
       sudo swapoff -a
       sudo sed -i 's/.*swap.*/#&/' /etc/fstab
      
    7. 禁止 selinux
       sudo apt install -y selinux-utils
       setenforce 0
      
    8. 允许ssh密码登录权限
      sudo vim /etc/ssh/sshd_config
      
      PasswordAuthentication yes
      
      sudo service sshd restart
      
    9. 重启虚拟机
       multipass restart k8s-master
      

二、安装Docker

以 k8s-master为例,k8s-node01与k8s-node02操作相同,不做赘述。

  1. 安装依赖项

    sudo apt-get update && apt-get install -y curl telnet wget man apt-transport-https ca-certificates software-properties-common vim
    
  2. 安装Docker

    1. 下载相关安装包
    2. 将安装包传送到虚拟机中
      multipass transfer docker-ce-cli_20.10.5_3-0_ubuntu-focal_arm64.deb k8s-master:/home/ubuntu/
      multipass transfer containerd.io_1.4.6-1_arm64.deb k8s-master:/home/ubuntu/
      multipass transfer docker-ce_20.10.5_3-0_ubuntu-focal_arm64.deb k8s-master:/home/ubuntu/
      
    3. 安装deb文件
       sudo dpkg -i docker-ce-cli_20.10.5_3-0_ubuntu-focal_arm64.deb
       sudo dpkg -i containerd.io_1.4.6-1_arm64.deb
       sudo dpkg -i docker-ce_20.10.5_3-0_ubuntu-focal_arm64.deb
      
  3. 配置Docker

    1. 将当前用户添加到 docker 的用户组中
      sudo groupadd docker 
      sudo usermod -aG docker $USER
      
    2. 将 docker 的 cgroup driver 改为 systemd,并通过阿里云获得加速通道:
      sudo vim /etc/docker/daemon.json
      
      { 
      	"exec-opts": ["native.cgroupdriver=systemd"],
      	"registry-mirrors": ["https://w6ek54j1.mirror.aliyuncs.com"]
      }
      
      sudo systemctl restart docker
      
    3. 设置 docker 开机自启动
      sudo systemctl enable docker
      

    在这里插入图片描述

三、安装Kubernetes

以 k8s-master为例,k8s-node01与k8s-node02操作相同,不做赘述。

  1. 添加Kubernetes国内源
    1. 创建配置文件
      sudo touch /etc/apt/sources.list.d/kubernetes.list
      
    2. 添加权限
      sudo chmod 666 /etc/apt/sources.list.d/kubernetes.list
      
    3. 添加内容
      sudo vim /etc/apt/sources.list.d/kubernetes.list
      
      deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
      
    4. 添加认证 key
      gpg --keyserver keyserver.ubuntu.com --recv-keys 307EA071 
      gpg --keyserver keyserver.ubuntu.com --recv-keys 836F4BEB 
      gpg --export --armor 307EA071 | sudo apt-key add - 
      gpg --export --armor 836F4BEB | sudo apt-key add -
      
    5. 更新操作系统源
      sudo apt update
      
  2. 网络配置
    1. 创建配置文件
      sudo touch /etc/sysctl.d/k8s.conf
      
    2. 添加权限
      sudo chmod 666 /etc/sysctl.d/k8s.conf
      
    3. 添加内容
      sudo vim /etc/sysctl.d/k8s.conf
      
      net.bridge.bridge-nf-call-ip6tables = 1 
      net.bridge.bridge-nf-call-iptables = 1 
      vm.swappiness = 0
      
    4. 执行命令使修改生效
      sudo modprobe br_netfilter
      sudo sysctl -p /etc/sysctl.d/k8s.conf
      
  3. 安装 Kubernetes
    1. 安装 Kubernetes 相关组件
      su
      sudo apt update && apt-get install -y kubelet=1.23.6-00 kubeadm=1.23.6-00 kubectl=1.23.6-00
      
    2. 设置为开机自启动
      sudo systemctl enable kubelet && systemctl start kubelet
      
    3. 重启虚拟机
      multipass restart k8s-master
      
    在这里插入图片描述

四、Master 节点配置

仅在 k8s-master 节点运行。

  1. 创建工作目录

    sudo mkdir /home/ubuntu/working
    cd working/
    
  2. 生成配置文件

    su
    kubeadm config print init-defaults --kubeconfig ClusterConfiguration > kubeadm.conf
    
  3. 修改配置文件

    vim kubeadm.conf
    
    # 修改镜像地址 
    imageRepository: registry.aliyuncs.com/google_containers 
    
    # 修改版本信息 
    kubernetesVersion: v1.23.6 
    
    # 修改 localAPIEndpoint 中的 advertiseAddress 为 master 节点 IP 
    localAPIEndpoint: 
    	advertiseAddress: 192.168.73.200 
    	bindPort: 6443 
    
    # 配置子网网络 
    # 10.244.0.0/16 和 10.96.0.0/12 分别是 kubernetes 内部 pods 和 services 的子网网络 
    networking: 			
    	dnsDomain: cluster.local 
    	podSubnet: 10.244.0.0/16 
    	serviceSubnet: 10.96.0.0/12
    
  4. 拉取 kubernetes 所关联的镜像

    kubeadm config images pull --config ./kubeadm.conf
    
  5. 初始化 kubernetes 环境

    sudo kubeadm init --config ./kubeadm.conf
    
  6. 创建系统服务

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

    记录下如下信息,后面node节点的加入需要用到:
    在这里插入图片描述

  7. 设置为开机自启动

    sudo systemctl enable kubelet && systemctl start kubelet
    

    在这里插入图片描述

五、Flannel 网络部署

仅在 k8s-master 节点运行。

  1. 拉取配置文件
    cd $HOME/working
    sudo wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    
  2. 编辑配置文件
    找到 net-conf.json 查看 Network 是否与之前的 kubeadm.conf 中的 podsubnet 的地址一致。
    net-conf.json: | { 
    	"Network": "10.244.0.0/16", 
    	Backend": { 
    		"Type": "vxlan" 
    	} 
    }
    
  3. 应用当前 flannel 配置文件完成组网
    kubectl apply -f kube-flannel.yml
    
    过一会儿后查看节点状态:
    在这里插入图片描述

六、Node 节点配置

仅在 k8s-node01与 k8s-node02节点运行。

  1. 创建工作目录
    sudo mkdir /home/ubuntu/working
    cd working/
    
  2. 设置kubelet 为开机自启动
    sudo systemctl enable kubelet && systemctl start kubelet
    
  3. 配置kube基础环境
    1. 传输配置文件
      登录 master 终端,将 master 机器的 admin.conf 传到 node01 和 node02:
      sudo scp /etc/kubernetes/admin.conf ubuntu@192.168.64.9:/home/ubuntu/working
      sudo scp /etc/kubernetes/admin.conf ubuntu@192.168.64.10:/home/ubuntu/working
      
    2. 加入k8s节点
      mkdir -p $HOME/.kube
      sudo cp -i $HOME/working/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
      
      su
      kubeadm join 192.168.64.8:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:43b03675267dea481adce0de4e743709939b1a5812af8d1a26913918b622a5c2
      
      在这里插入图片描述
  4. 应用 flannel 网络
    1. 传输配置文件
      登录 master 终端,将 master 机器的 kube-flannel.yml 传到 node01 和 node02:
      sudo scp $HOME/working/kube-flannel.yml ubuntu@192.168.64.9:/home/ubuntu/working
      sudo scp $HOME/working/kube-flannel.ymlubuntu@192.168.64.10:/home/ubuntu/working
      
    2. 应用 flannel 网络
      kubectl apply -f kube-flannel.yml
      
      在这里插入图片描述

七、环境测试

部署nginx 测试

# 部署nginx
sudo kubectl create deployment nginx --image=nginx

# 暴露端口
sudo kubectl expose deployment nginx --port=80 --type=NodePort

# 查看状态
sudo kubectl get pod
sudo kubectl get svc

在这里插入图片描述
在这里插入图片描述

八、安装Dashboard

  1. 下载yaml

    wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.1/aio/deploy/recommended.yaml
    
  2. 修改配置
    修改 kind: Service 中的字段,将 service type 改为 NodePort,然后指定 nodeport 端口

    kind: Service
    apiVersion: v1
    metadata:
    	labels:
    		k8s-app: kubernetes-dashboard
    	name: kubernetes-dashboard
    	namespace: kubernetes-dashboard
    spec:
    	type: NodePort
    	ports:
    		- port: 443
    		  targetPort: 8443
    		  nodePort: 32323 
    	selector:
    		k8s-app: kubernetes-dashboard
    
  3. 部署 yaml 文件

    sudo kubectl apply -f recommended.yaml
    

    在这里插入图片描述

  4. 创建访问账户,获取token
    创建账号

    sudo kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
    

    授权

    sudo kubectl create clusterrolebinding dashboard-admin-rb --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
    

    获取账号token

    sudo kubectl get secrets -n kubernetes-dashboard | grep dashboard-admin
    
    sudo kubectl describe secrets dashboard-admin-token-6kjfp -n kubernetes-dashboard
    
  5. 通过浏览器访问
    在这里插入图片描述

九、安装ingress-nginx

  1. 拉取配置文件

    cd $HOME/working
    sudo wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/baremetal/deploy.yaml
    
  2. 修改配置文件
    设置镜像地址为阿里云

    # 修改 k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660
    registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1
    
    # 修改k8s.gcr.io/ingress-nginx/controller:v1.1.1@sha256:0bc88eb15f9e7f84e8e56c14fa5735aaa488b840983f87bd79b1054190e660de
    registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.1.1
    
  3. 安装metrics-server

    sudo kubectl apply -f ./deploy.yaml
    
  4. 查看ingress-nginx

    sudo kubectl get pod -n ingress-nginx
    

    在这里插入图片描述

  5. 查看资源使用情况

    sudo kubectl get svc -n ingress-nginx
    

    在这里插入图片描述

十、安装metrics-server

  1. 拉取配置文件

    cd $HOME/working
    sudo wget https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.5.2/components.yaml
    
  2. 修改配置文件
    设置镜像地址为阿里云,并添加 “- --kubelet-insecure-tls”
    在这里插入图片描述

  3. 安装metrics-server

    sudo kubectl apply -f ./components.yaml
    
  4. 查看pod运行情况

    sudo kubectl top node
    

    在这里插入图片描述

  5. 查看资源使用情况

    sudo kubectl top pod -n kube-system
    

    在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

扮猪的三木

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

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

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

打赏作者

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

抵扣说明:

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

余额充值