最新版kubeadm快速部署Kubernetes

kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具

一、操作要求
在开始之前,部署kubernetes集群需要满足以下几个条件
  • 一台或多台服务器或虚拟机,操作系统Centos7.x-86_x64
  • 内存2G及以上,CPU2核及以上,硬盘30G及以上
  • 集群在同一网络内,可以互通。
  • 可以访问外网
  • 禁止swap分区
二、实现目标
  • 在所有节点是安装Docker和kubeadm
  • 部署Kubernetes Maaster
  • 部署容器网络插件
  • 部署Kuberneters Node,将节点加入到kuberneters集群中
  • 部署Dashboard Web页面,可视化查看Kubernetes资源
三、准备环境(3台都操作)


本次搭建采用 3台虚拟机,1台master,2台node。

# 关闭防火墙
systectl stop firewalld
systemctl disable firewalld# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0#关闭swap分区
swapoff -a #临时关闭
vim /etc/fstab #永久关闭#时间校正
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date -R#设置修改主机名
master:  hostnamectl set-hostname k8s-master
node1:   hostnamectl set-hostname k8s-node1
node2:   hostnamectl set-hostname k8s-node2
全部执行:su -#添加主机名和ip对应关系(master操作)
vim /etc/hosts  192.168.59.137 k8s-master192.168.59.136 k8s-node1192.168.59.138 k8s-node2
scp -r /etc/hosts k8s-node1:/etc/hosts
scp -r /etc/hosts k8s-node2:/etc/hosts
master: ping k8s-node1  #三台机器互ping。将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

四、所有节点安装Docker/kubeadm/kubelet

kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker

4.1 安装Docker
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo --no-check-certificate
yum -y install docker-ce
systemctl enable docker && systemctl start docker
docker --versionDocker version 18.06.1-ce, build e68fc7a
#docker版本地址 https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.06.1.ce-3.el7.x86_64.rpm

4.2 添加阿里云YUM软件源
cat > kubernetes.repo  <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
4.3 安装kubeadm,kubelet和kubectl

由于版本更新频繁,这里指定版本部署:

#注意下载顺序
yum -y install kubelet-1.13.3 kubectl-1.13.3 kubeadm-1.13.3
systemctl enable kubelet
五、部署Kubernetes Master
kubeadm init \--apiserver-advertise-address=192.168.59.139 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.13.3 \--service-cidr=10.1.0.0/16 \--pod-network-cidr=10.244.0.0/16
# --kubernetes-version  # 指定要安装的k8s版本
# --pod-network-cidr    # 指定pod网络地址范围
# --service-cidr   # 指定service网络地址范围
# --apiserver-advertise-address #指定api地址,这里配置成了master的私网接口IP

部署成功后如下所示,这里是自定义使用的阿里云镜像仓库地址,默认拉取地址是k8s.gcr.io国内无法访问。

使用kubectl工具:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
六、安装Pod网络插件(CNI)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml
七、加入Kubernetes Node

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

#如果忘记token,执行
kubeadm  token list
#如果忘记ca证书sha256编码hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
#执行添加新节点命令(node服务器操作)
kubeadm join 192.168.59.139:6443 --token u76dhj.jxelyjzta0efld25 --discovery-token-ca-cert-hash sha256:1d425a82437e3f17b78c8410d82e060fb8c6961278f267993dbc8449d632ab5e

八、测试kubernetes集群

在kubernetes集群中创建一个pod,验证是否正常运行

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl create deployment nginx --image=nginx

kubectl get nodes
kubectl get pod -n kube-system
kubeadm get pod,svc

访问地址:http://NodeIP:Port

10.1.107.15:30162,如下

九、部署Dashboard可视化
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

默认镜像国内无法访问,修改镜像地址为:lizhenliang/kubernetes-dashboard-amd64:v1.10.1

默认Dashboard只能集群内部访问,修改Service为NodePort类型,暴露到外部:

vim kubernetes-dashboard.yaml
# 修改最后部分,修改后如下。


# 需要卸载的话,执行delete就行
#kubectl delete -f kubernetes-dashboard.yaml
kubectl apply -f kubernetes-dashboard.yaml

访问地址:https://nodeip:30001 https://192.168.59.140:30001

创建service account并绑定默认cluster-admin管理员集群角色
我们配置kubeconfig或输入token,这里我们选择后者,通过以下命令获取输出的token:

kubectl create serviceaccount dashboard-admin -n kube-system
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')


输入token令牌



最新版kubeadm快速部署Kubernetes相关推荐

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

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

  2. ② kubeadm快速部署Kubernetes集群

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

  3. DockerK8s---通过kubeadm快速部署K8s

    文章目录 Docker&K8s---通过kubeadm快速部署K8s 环境准备 环境初始化 开始安装 安装docker 添加kubernetes的yum软件源 安装kubeadm,kubele ...

  4. 三台ECS使用kubeadm快速部署最新版本K8sv1.21.3

    文章目录 阿里云三台ECS使用kubeadm快速部署最新版本K8sv1.21.3 环境准备 环境初始化 开始安装 安装docker 添加kubernetes的yum软件源 安装kubeadm,kube ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 一个人越来越有出息的7大迹象
  2. 二十三、前端必学Node.js入门
  3. 为什么 HTTP3.0 使用 UDP 协议?
  4. java ssl发送邮件_通过SSL发送的Java邮件
  5. centos oracle sqlplus,centos 下oracle sqlplus乱码问题解决
  6. 京东程序员回应“被猝死”;淘宝特价版已提交微信小程序;苹果 M1 单核性能勇超 Intel 11 代 i7|极客头条...
  7. JavaScript(二)数据类型
  8. java 父子级json组装不用递归_初级Java程序员如何进阶
  9. Oracle文件路径——.dbf与.ora
  10. 15. Provide access to raw resources in resouce-managing classes
  11. WebGrid 详解
  12. 【pys60笔记】中文
  13. MySQL之高级SQL语句
  14. 学术论文写作之引言(Introduction)怎么写
  15. 爬取 bilibili 弹幕数据
  16. WSL2 Ubuntu中apt update命令报错,无法解析域名解决方法
  17. 分享一个宝藏级 Java 插件
  18. CH0502 七夕祭
  19. 上海市高新技术企业各区奖励政策汇总2022版
  20. Java函数式编程(Lambda表达式、Stream流用法)

热门文章

  1. 12款APP用户超千万,羊驼教育靠什么打造“更大的世界”?
  2. 【学习笔记】MacOS快捷键
  3. 转载 ----MAVEN相关学习
  4. 携程无线发布稳定高效的秘诀
  5. SCAPY官方教程一
  6. 数据分析方法(市场调研常用、思维导图)
  7. Day4 管理用户和组、tar备份与恢复、crom计划
  8. java对文件的处理(读取,写入,复制,加密和解密)
  9. 百度地图api调用 实现车载导航功能
  10. 《JUC并发编程 - 基础篇》JUC概述 | Lock接口 | 线程间通信 | 多线程锁 | 集合线程安全