镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

1、基础环境

至少1个Master和1个Worker;

1.1 版本说明

软件 版本
操作系统 CentOS-7-x86_64-1810
Docker 19.03.8
Kubernetes 1.18.4

1.2 集群规划

Hostname IP 组件
master01 192.168.0.104

kubelet
kube-apiserver
kube-controller-manager
kube-schedule
kube-proxy

calico

node01 192.168.0.105

kubelet
kube-proxy

calico

node02 192.168.0.106

kubelet
kube-proxy

calico


2、基本配置

1) 服务器开启硬件虚拟化支持;
2) 操作系统版本大于CentOS7.5,Minimal模式,可update到最新版本;
3) 关闭SElinux和Firewalld服务;
#sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
#setenforce 0
#systemctl disable firewalld
#systemctl stop firewalld
4) 设置hostname并在/etc/hosts配置本地解析;
#hostnamectl set-hostname master1.lab.com
5) 关闭Swap服务
#swapoff -a
#sed -i '/swap/d' /etc/fstab
6) 修改sysctl.conf
#echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
#echo "net.bridge.bridge-nf-call-ip6tables = 1" >> /etc/sysctl.conf
#echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
#sysctl -p
若提示cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
#modprobe net_brfilter
#sysctl -p

3、所有节点安装Docker服务

1) 如果已安装过旧版本需要删除:
#yum -y remove docker-client docker-client-latest docker-common docker-latest docker-logrotate docker-latest-logrotate \ docker-selinux docker-engine-selinux docker-engine
2) 设置阿里云docker仓库,并安装Docker服务;
#yum -y install yum-utils lvm2 device-mapper-persistent-data nfs-utils xfsprogs wget
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum -y install docker-ce docker-ce-cli containerd.io
#systemctl enable docker
#systemctl start docker

4、所有节点安装K8S服务

1) 如果已安装过旧版本,需要删除:
#yum -y remove kubelet kubadm kubctl
2) 设置阿里云的仓库,并安装新版本
#cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0repo_gpgcheck=0gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttp://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgEOF
#yum -y install kubelet kubeadm kubectl
Node节点不需要按照kubectl
3) 修改Docker Cgroup Driver为systemd,如果不修改则在后续添加Worker节点时可能会遇到“detected cgroupfs as ths Docker driver.xx”的报错信息,并配置Docker本地镜像库;
cat > /etc/docker/daemon.json <<EOF
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2","registry-mirrors":["https://kfwkfulq.mirror.aliyuncs.com","https://2lqq34jg.mirror.aliyuncs.com","https://pee6w651.mirror.aliyuncs.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}
4) 重启Docker,并启动Kubelet
#systemctl daemon-reload
#systemctl restart docker
#systemctl enable kubelet
#systemctl start kubelet

5、Master节点部署

1) 如果需要初始化Master节点,请执行#kubeadm reset;
2) 配置环境变量:
#echo export MASTER_IP=10.33.0.51 > k8s.env.sh
#echo export APISERVER_NAME=master1.lab.com >> k8s.env.sh
#sh k8s.env.sh
3) Master节点初始化:
#kubeadm init \--apiserver-advertise-address 0.0.0.0 \--apiserver-bind-port 6443 \--cert-dir /etc/kubernetes/pki \--control-plane-endpoint master1.lab.com \--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \--kubernetes-version 1.18.2 \--pod-network-cidr 10.11.0.0/16 \--service-cidr 10.20.0.0/16 \--service-dns-domain cluster.local \--upload-certs
# 初始化 Control-plane/Master 节点,命名参数说明

kubeadm init \

--apiserver-advertise-address 0.0.0.0 \
# API 服务器所公布的其正在监听的 IP 地址,指定“0.0.0.0”以使用默认网络接口的地址
# 切记只可以是内网IP,不能是外网IP,如果有多网卡,可以使用此选项指定某个网卡
--apiserver-bind-port 6443 \
# API 服务器绑定的端口,默认 6443
--cert-dir /etc/kubernetes/pki \
# 保存和存储证书的路径,默认值:"/etc/kubernetes/pki"
--control-plane-endpoint kuber4s.api \
# 为控制平面指定一个稳定的 IP 地址或 DNS 名称,
# 这里指定的 kuber4s.api 已经在 /etc/hosts 配置解析为本机IP
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
# 选择用于拉取Control-plane的镜像的容器仓库,默认值:"k8s.gcr.io"
# 因 Google被墙,这里选择国内仓库
--kubernetes-version 1.17.3 \
# 为Control-plane选择一个特定的 Kubernetes 版本, 默认值:"stable-1"
--node-name master01 \
#  指定节点的名称,不指定的话为主机hostname,默认可以不指定
--pod-network-cidr 10.10.0.0/16 \
# 指定pod的IP地址范围
--service-cidr 10.20.0.0/16 \
# 指定Service的VIP地址范围
--service-dns-domain cluster.local \
# 为Service另外指定域名,默认"cluster.local"
--upload-certs
# 将 Control-plane 证书上传到 kubeadm-certs Secret
4) 配置kubectl:
#rm -f .kube && mkdir .kube
#cp -i /etc/kubernets/admin.conf .kube/config
#chown $(id -u):$(id -g) $HOME/.kube/config   //可用于为普通用户分配kubectl权限

6、安装Calico网络插件:

集群必须安装网络插件以实现Pod间通信,只需要在Master节点操作,其他Node节点会自动创建相关Pod;
#wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
该配置文件默认采用的Pod的IP地址为192.168.0.0/16,需要修改为集群初始化参数中采用的值,本例中为10.10.0.0/16;
#sed -i "s#192\.168\.0\.0/16#10\.10\.0\.0/16#" calico.yaml
#kubectl apply -f calico.yaml
1) 等待所有容器状态处于Running状态:
#watch -n 2 kubectl get pods -n kube-system -o wide
#kubectl get nodes -o wide //查看所有node状态
2) 获取join命令参数,并保存输出结果:
#kubeadm token create --print-join-command > node.join.sh

7、Worker节点部署

1) 如果需要初始化Worker节点,请执行#kubeadm reset;
2) 从Master复制环境变量和加入集群脚本:
#scp master:/root/k8s.env.sh master:/root/mode.join.sh .
#sh k8s.env.sh
#sh node.join.sh
或直接执行
#kubeadm join master1.lab.com:6443 --token e1xszv.7fa46uw7intwcbwi  \--discovery-token-ca-cert-hash sha256:2637022ef0928d0b390bf10b246ccf20e00f73966667bc711d683a8d71492e5a
3) 在Master节点查看Worker状态:
#kubectl get nodes -o wide
4) 移除Worker节点:
在Worker节点执行
#kubeadm reset -f在Master节点执行
#kubectl delete node <worker节点主机名>

8、增加Master节点

1) 在待增加Master节点执行
#kubeadm join master1.lab.com:6443 --token e1xszv.7fa46uw7intwcbwi  \--discovery-token-ca-cert-hash sha256:2637022ef0928d0b390bf10b246ccf20e00f73966667bc711d683a8d71492e5a\
--control-plane --certificate-key 5253fc7e9a4e6204d0683ed2d60db336b3ff64ddad30ba59b4c0bf40d8ccadcd

9、安装Ingress Controller

1) 在Master节点执行,具体可以参考https://github.com/nginxinc/kubernetes-ingress/blob/v1.5.3/docs/installation.md
#kubectl apply -f https://kuboard.cn/install-script/v1.16.0/nginx-ingress.yaml

10、安装Kuboard图形化管理界面

1) 在Master节点执行
#kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml
查看运行状态,可能需要几分钟才能成为Running状态:
#kubectl get pods -l k8s.eip.work/name=kuboard -n kube-system
2) 获取Token权限,用于界面登录
#kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d > admin-token.txt
#kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-viewer | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d > read-only-token.txt
3) 管理节目访问
http://任意一个Worker节点的IP地址:32567

参考链接

使用 kubeadm快速部署Kubernetes-v1.18相关推荐

  1. 基于kubeadm快速部署kubernetes K8S V1.17.4集群-无坑完整版

    基于kubeadm快速部署kubernetes K8S V1.17.4集群,并部署Dashboard Web页面,实现可视化查看Kubernetes资源 主机配置规划 服务器名称(hostname) ...

  2. 最新版kubeadm快速部署Kubernetes

    最新版kubeadm快速部署Kubernetes kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具 一.操作要求 在开始之前,部署kubernetes集群需要满足以下几个条 ...

  3. ② kubeadm快速部署Kubernetes集群

    文章目录 1. 安装要求 2. 目标 3. 准备环境 4. 所有节点安装Docker/kubeadm/kubelet 4.1 安装Docker(以一台为例,其他相同) 4.2 添加kubernetes ...

  4. 一行命令快速安装Kubernetes(V1.18)高可用集群

    一条命令部署 Kubernetes 高可用集群 

  5. ubuntu18.04 kubeadm 安装kubernetes v1.18.3

    机器:Ubuntu 18.04.2 LTS 关闭swap 先关闭swap!,不关也可以,安装kubernetes初始时会有提示关闭swap . sudo swapoff -a free -htotal ...

  6. 使用Kubeadm快速部署K8S集群

    一.简介 Kubeadm 是官方社区推出的一个用于快速部署 Kubernetes 集群的工具,能通过指令快速完成一个 Kubernetes 集群的部署.需要注意的是,Kubeadm 方式部署的 Kub ...

  7. 使用kubeadm快速部署一个K8s集群

    kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具. 这个工具能通过两条指令完成一个kubernetes集群的部署: # 创建一个 Master 节点 $ kubeadm i ...

  8. K8S初识!!kubeadm快速部署

    使用kubeadm快速部署一套K8S集群 一.Kubernetes概述 1.1 Kubernetes是什么 1.2 Kubernetes特性 1.3 Kubernetes集群架构与组件 1.4 Kub ...

  9. kubeadm快速部署一套K8S集群

    Kubernetes集群组件介绍 Master组件 kube-apiserver Kubernetes API, 集群的统一入口,各组件协调者,以RESTful API提供接口服务,所有对象资源的增删 ...

  10. CentOS7中使用kubeadm快速部署一套K8S集群

    一.Kubernetes概述 1.1 Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S K8S用于容器化应用程序的部 ...

最新文章

  1. hive进行词频统计
  2. Linux安装卸载mysql
  3. Cache系列:spring-cache简单三步快速应用ehcache3.x-jcache缓存(spring4.x)
  4. sql 查看某用户的连接数 以及 如何删除该用户的会话
  5. iphone屏幕录制_iPhone怎么内录声音?怎么录制苹果手机内部声音?
  6. 状态开关按钮(ToggleButton)及按钮(Swich)的使用
  7. Kubernetes 微服务监控体系
  8. SR-IOV(Single Root I/O Virtualization):将PCIe共享给虚拟机的标准
  9. Python稳基修炼的经典案例1(计算机二级、初学者必须掌握的例题)
  10. poj3660 Cow Contest
  11. mysql出错代码表
  12. 建模助手 —『 CAD图层管理 』Revit视图干净清爽
  13. GoodERP交付手册:CRM模块交付
  14. [转载] 百家讲坛——郦波评说曾国藩家训上部 01 谁来拯救笨小孩
  15. VMware Workstation创建Windows 8.1虚拟机
  16. 跑跑卡丁车Bingo喜当托儿纪念,2022/04/30,23:38:56
  17. splice和sendfile
  18. 微博运营怎么做才能吸引更多的粉丝?
  19. PHP将处理图片为圆角
  20. Box2d源码学习十四TOI之碰撞时间的实现

热门文章

  1. java-判断集合中的某个元素的属性是否全部相同
  2. [sublime系列文章] sublime text 3构建系统
  3. 洛谷P2257 YY的GCD(莫比乌斯反演)
  4. LNMP环境下搭建wordpress
  5. webpack分离打包css和less
  6. Message Authentication Code
  7. c++虚函数动态联编需要避免的内存泄漏问题
  8. android studio和IDE如何自定义module路径
  9. Luogu2680 [NOIP2015 提高组] 运输计划
  10. 小程序学习笔记(8)-导航组件