环境准备
1.一台16G及以上的电脑
2.window系统
3.安卓 VMware pro 17
4.分别创建三个centos7 mini 的虚拟主机,硬件配置按需配置最好是2核2G或以上,网络模式使用桥连
5.分别配置好静态ip地址和hostname
Docker容器化安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| # 首先安装工具类 yum install -y yum-utils # 配置docker的yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装docker sudo yum install -y docker-ce docker-ce-cli containerd.io # 可以指定版本来安装,这里是安装最新版本,所以要寻找最新版本的k8s来支持 yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6 # 启动docker systemctl enable docker --now
# 添加了docker的生产环境核心配置cgroup sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://reg-mirror.qiniu.com/","https://5wdlar25.mirror.aliyuncs.com","https://hub-mirror.c.163.com/","https://docker.mirrors.ustc.edu.cn/"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF # 加载配置 重启docker sudo systemctl daemon-reload && sudo systemctl restart docker
|
预备环境搭建
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node1 hostnamectl set-hostname k8s-node2
bash
sudo setenforce 0 sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF
sudo modprobe overlay sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF
sudo sysctl --system
lsmod | grep br_netfilter lsmod | grep overlay
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
|
集群三大组件安装(kubeadm、kubectl、kubelet)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg exclude=kubelet kubeadm kubectl EOF
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
|
使用kubeadm引导集群
下载各个机器需要的镜像
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| sudo tee ./images.sh <<-'EOF'
images=( kube-apiserver:v1.20.9 kube-proxy:v1.20.9 kube-controller-manager:v1.20.9 kube-scheduler:v1.20.9 coredns:1.7.0 etcd:3.4.13-0 pause:3.2 ) for imageName in ${images[@]} ; do docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName done EOF chmod +x ./images.sh && ./images.sh
|
初始化主节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| echo "{你的主节点内网主机ip} cluster-endpoint" >> /etc/hosts
ping cluster-endpoint
kubeadm init \ --apiserver-advertise-address=192.168.0.201 \ --control-plane-endpoint=cluster-endpoint \ --image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \ --kubernetes-version v1.20.9 \ --service-cidr=10.96.0.0/16 \ --pod-network-cidr=192.188.0.0/16
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubeadm reset
kubectl get nodes
curl https://docs.projectcalico.org/v3.20/manifests/calico.yaml -O
kubectl apply -f calico.yaml
kubeadm join cluster-endpoint:6443 --token hijbfi.ewcww5noqyztfgsa \ --discovery-token-ca-cert-hash sha256:2c2b1c21e175f7eaa0692e8fad349af599adbd0f53118d0f48101aacbd3be142
kubeadm token create --print-join-command
watch -n 1 kubectl get pod -A
|
最后重启所有节点机器,测试一下集群的修复能力。如果启动失败,看看是不是docker服务是不是没有启动。
部署可视化
1 2 3 4 5 6
| kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml
kubectl apply -f dashboard.yaml
|