镜像下载

使用阿里云地址CentOS-7-x86_64-DVD-2009.iso

Win10 Hyper-v安装

打开任务管理器查看是否支持虚拟化,没有启用需要金融BIOS开启image.png
对于win10 家庭版需要手动安装hyper-v
新建文件hyperf-v.bat
复制代码

  1. pushd "%~dp0"
  2. dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
  3. for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
  4. del hyper-v.txt
  5. Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

右键以管理员身份运行文件稍等片刻,重启电脑

Hyper-v虚拟机创建

打开Hyper-v管理器
新建虚拟机,按照步骤执行
点击虚拟机交换管理器,新建虚拟交换机,选择内部
打开系统-网络适配器-vEthernet (Default Switch)-查看IP,后面设置虚拟机IP需要
image.png

主机规划

角色 IP地址 操作系统 配置
Master 172.19.160.100 CentOS7.9,基础设施服务器 2核CPU,2G内存,50G硬盘
Node1 172.19.160.101 CentOS7.9,基础设施服务器 2核CPU,2G内存,50G硬盘
Node2 172.19.160.102 CentOS7.9,基础设施服务器 2核CPU,2G内存,50G硬盘

centos7安装

省略

环境初始化

检查系统版本

  1. cat /etc/redhat-release

image.png

关闭selinux

查看是否开启

  1. getenforce

永久关闭,重启生效

  1. sed -i 's/enforcing/disabled/' /etc/selinux/config

关闭swap分区

重启生效

  1. sed -ri 's/.*swap.*/#&/' /etc/fstab

关闭防火墙
关闭

  1. systemctl stop firewalld

禁止启动

  1. systemctl disable firewalld

设置主机名

  1. hostnamectl set-hostname k8s-master
  1. hostnamectl set-hostname k8s-node1
  1. hostnamectl set-hostname k8s-node2

主机名解析

  1. cat >> /etc/hosts << EOF
  2. 172.19.160.100 k8s-master
  3. 172.19.160.101 k8s-node1
  4. 172.19.160.102 k8s-node2
  5. EOF

时间同步

  1. ntpdate time.windows.com

增加k8s配置

  1. cat > /etc/sysctl.d/k8s.conf << EOF
  2. net.bridge.bridge-nf-call-ip6tables = 1
  3. net.bridge.bridge-nf-call-iptables = 1
  4. net.ipv4.ip_forward = 1
  5. vm.swappiness = 0
  6. EOF

加载模块

  1. modprobe br_netfilter

生效

  1. sysctl --system

开启ipvs

  1. yum -y install ipset ipvsadm

所有节点执行

  1. cat > /etc/sysconfig/modules/ipvs.modules <<EOF
  2. #!/bin/bash
  3. modprobe -- ip_vs
  4. modprobe -- ip_vs_rr
  5. modprobe -- ip_vs_wrr
  6. modprobe -- ip_vs_sh
  7. modprobe -- nf_conntrack_ipv4
  8. EOF

运行

  1. chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

重启

  1. reboot

安装Docker、kubeadm、kubelet和kubectt

安装docker

  1. wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
  1. yum -y install docker-ce-18.06.3.ce-3.el7
  1. systemctl enable docker && systemctl start docker
  1. docker version

设置镜像加速

  1. sudo mkdir -p /etc/docker
  1. sudo tee /etc/docker/daemon.json <<-'EOF'
  2. {
  3. "exec-opts": ["native.cgroupdriver=systemd"],
  4. "registry-mirrors": ["阿里云镜像加速器地址"],
  5. "live-restore": true,
  6. "log-driver":"json-file",
  7. "log-opts": {"max-size":"500m", "max-file":"3"}
  8. }
  9. EOF
  1. sudo systemctl daemon-reload
  1. sudo systemctl restart docker

安装kubeadm、kubelet和kubect

修改阿里源

  1. cat > /etc/yum.repos.d/kubernetes.repo << EOF
  2. [kubernetes]
  3. name=Kubernetes
  4. baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
  5. enabled=1
  6. gpgcheck=0
  7. repo_gpgcheck=0
  8. gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
  9. EOF
  1. yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
  1. vim /etc/sysconfig/kubelet

修改

  1. KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
  2. KUBE_PROXY_MODE="ipvs"
  1. systemctl enable kubelet

部署k8s

查看k8s所需镜像

  1. kubeadm config images list

部署master节点

  1. kubeadm init \
  2. --apiserver-advertise-address=172.19.160.100 \
  3. --image-repository registry.aliyuncs.com/google_containers \
  4. --kubernetes-version v1.18.0 \
  5. --service-cidr=10.96.0.0/12 \
  6. --pod-network-cidr=10.244.0.0/16

根据提示信息

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

生成永不过期token

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

部署node节点

  1. kubeadm join 172.19.160.100:6443 --token zfmjw4.t8rdmpxpyu12s5bq --discovery-token-ca-cert-hash sha256:2df11c34aab096b68202042af1a8ecebabb005b008e122f8410e5ed9b3ab8644

部署网络插件

查看状态

  1. kubectl get nodes
  1. wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

启动flannel

  1. kubectl apply -f kube-flannel.yml

查看进度

  1. kubectl get pods -n kube-system

查看集群健康

  1. kubectl get cs
  1. kubectl cluster-info

部署Nginx

部署

  1. kubectl create deployment nginx --image=nginx:1.14-alpine

暴露端口

  1. kubectl expose deployment nginx --port=80 --type=NodePort

查看状态

  1. kubectl get pods,svc