小白在网上找了很多关于k8s集群部署的文档,但是版本老旧,到处踩坑,终于部署成功,记录下过程。

一、准备工作

  虚拟机:VMware® Workstation 15 Pro

  Xhell 6:Xshell.exe: 6.0.0025

  操作系统:CentOS-7

  这里对虚拟机有个要求,2cpu,内存2g,不然初始化master会警告

  具体的关于虚拟机安装可以看另一篇文章https://www.cnblogs.com/CoderLinkf/p/12393993.html

  部署规划

192.168.3.180        k8s-master
192.168.2.156 k8s-node1

1.关闭防火墙,这点基本所有教程都有

  systemctl stop firewalld

2.关闭selinux

  setenforce 0

3.关闭swap

  swapoff -a    临时关闭

  free             可以通过这个命令查看swap是否关闭了

  vim /etc/fstab  永久关闭

4.添加主机名与IP对应的关系

  vim /etc/hosts

192.168.3.180        k8s-master
192.168.2.156 k8s-node1

  当然,ip要改成自己的

5.将桥接的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

6.安装Docker

  1)安装docker

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O/etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce

  2)设置docker服务开机自启

systemctl enable docker
systemctl start docker

  3)查看docker版本,这里是最新版

docker --version
Docker version 19.03.6, build 369ce74a3c

7.添加阿里云YUM软件源

cat > /etc/yum.repos.d/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

8.安装kubeadm,kubelet和kubectl

yum makecache fast
yum install -y kubelet kubeadm kubectl --nogpgcheck

  指定版本没试过,这里直接安装最新版,并且跳过公钥检查

9.部署Kubernetes Master

  1)初始化kubeadm

kubeadm init --apiserver-advertise-address=192.168.3.180 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.17.3 --service-cidr=10.1.0.0/16 --pod-network-cidr=10.244.0.0/16

  一样的,记得改成自己的master节点ip

  当出现如下结果,表示初始化顺利,这一步要等待几分钟,并且一开始没有进度提示,一度以为卡了

  

  查看镜像

docker images

  

  2)接下来,将初始化结果中的命令复制出来执行:

      

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

  下面的命令等会儿用来添加节点

kubeadm join 192.168.3.180:6443 --token dfug5t.cscrkl8hy8whplx7 \
--discovery-token-ca-cert-hash sha256:625f94e773c68ba673f44157e8983640a4505232c0adc0cb8a10f7c05e602c90

  到此,就可以使用kubectl命令了

kubectl get node

    

  但是是notready状态,

  执行  kubectl get pods -n kube-system  命令可以看到,头两个状态是pending

10.安装flannel

  1)这里,大部分文档的flannel安装链接基本都失效了,找了很久找到一个

  https://github.com/coreos/flannel/blob/master/Documentation/kube-flannel.yml

  将这个文件下载下来,ftp到root下面,然后开始执行

  或者执行命令保存:wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

sed -i 's@quay.io@quay.azk8s.cn@g' kube-flannel.yml
kubectl apply -f kube-flannel.yml

    

  2)查看是否部署成功

kubectl get pods -n kube-system

    

  3)再次执行  kubectl get node  命令,可以看到,状态是ready

    

  安装失败了,怎么清理环境重新安装啊?执行一条命令:

  kubeadm reset

  然后重新初始化即可

11.Node节点加入集群

  node节点虚拟机,执行1-8步,然后执行master节点初始化kubeadm时的命令

kubeadm join 192.168.3.180:6443 --token dfug5t.cscrkl8hy8whplx7 \
--discovery-token-ca-cert-hash sha256:625f94e773c68ba673f44157e8983640a4505232c0adc0cb8a10f7c05e602c90

  如果一直卡在 “Running pre-flight checks” 上,则很可能是时间未同步,token失效导致

  可以在master节点执行

  kubeadm token list

  kubeadm token create

  重新生成即可

  openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

  kubeadm reset<br>$ kubeadm join 192.168.38.11:6443 --token unnscz.aq2r62cuc14w27oa \ --discovery-token-ca-cert-hash sha256:8b79b6461e58c07333cb2851fe74fd4374af8bbbe0bf7e040b415b86ad4fb89d

12.测试kubernetes集群

  在master节点中

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

  然后执行  kubectl get pods  查看

  kubectl get pod,svc -o wide

  通过浏览器访问:http://192.168.3.180:32049 正常访问

参考文章:

https://www.cnblogs.com/caoxb/p/11243472.html

https://www.cnblogs.com/zyxnhr/p/12181721.html#_label1_8

CentOS7 部署K8S集群,最新版1.17.3-0的更多相关文章

  1. CentOS7 部署K8S集群

    虚拟机:   VMware® Workstation 12 Pro 12.5.9 build-7535481操作系统:CentOS Linux release 7.6.1810 (Core)   部署 ...

  2. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...

  3. Ansible自动化部署K8S集群

    Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...

  4. 使用kubeadm部署k8s集群[v1.18.0]

    使用kubeadm部署k8s集群 环境 IP地址 主机名 节点 10.0.0.63 k8s-master1 master1 10.0.0.63 k8s-master2 master2 10.0.0.6 ...

  5. 二进制方法-部署k8s集群部署1.18版本

    二进制方法-部署k8s集群部署1.18版本 1. 前置知识点 1.1 生产环境可部署kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kuberadm Kubea ...

  6. 【02】Kubernets:使用 kubeadm 部署 K8S 集群

    写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...

  7. 部署K8S集群

    1.Kubernetes 1.1.概念 kubernetes(通常称为k8s)用于自动部署.扩展和管理容器化应用程序的开源系统.它旨在提供“跨主机集群的自动部署.扩展以及运行应用程序容器的平台”.支持 ...

  8. 菜鸟系列k8s——快速部署k8s集群

    快速部署k8s集群 1. 安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kuberne ...

  9. 使用RKE快速部署k8s集群

    一.环境准备 1.1环境信息 IP地址 角色 部署软件 10.10.100.5 K8s Master Etcd.Control 10.10.100.17 K8s Worker1 Worker 10.1 ...

随机推荐

  1. vue结合element实现自定义上传图片、文件

    参考了很多文献,感谢各位帖子,所以也想把自己遇到不会的东西分享出来,菜鸟一枚大家一进步!

  2. Java之代码块

    package com.atguigu.java3;/* * 代码块(或初始化块) * * 1. 代码块的作用:用来初始化类.对象 * 2. 代码块如果有修饰的话,只能使用static. * 3. 分 ...

  3. 【Python杂货铺】速学python基础

    "人生苦短,我学python"是编程届的名言.用python写小脚本的便捷性,让很多其他语言的学习者把python当作辅助语言.拥有了某一个语言的功底,再来学习另外一种语言应该是十 ...

  4. 用bosybox制作文件系统

    在orangepi_sdk/source/busybox-1.25.0目录里有源码. ). 先清除编译出来的文件及配置文件 make distclean ). 配置busybox make menuc ...

  5. Linux centos 下安装redis

    一.安装编译工具及库文件      yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 二.选择安装文件 ...

  6. Traffic Network in Numazu

    Traffic Network in Numazu 题目描述 Chika is elected mayor of Numazu. She needs to manage the traffic in ...

  7. Zabbix - 修改默认的 Web 访问URL

    背景 CentOS 7 64 Zabbix 4 LTS 使用RPM在线方式安装 修改过程 # 修改默认的访问路径:http://x.x.x.x/zabbix 修改为 http://x.x.x.x/ v ...

  8. mysql中in和exist的区别

    mysql中in和exists的区别 -- in写法select * from A where A.id in (select bid from  B ) and A.name in (select ...

  9. 在mysql中生成数据库和数据表

    #创建数据库CREATE DATABASE s4day65 DEFAULT CHARSET utf8; #班级表 CREATE TABLE class (id INT NOT NULL AUTO_IN ...

  10. mpvue框架的小程序和H5同时开发

    demo链接1.样式统一为了达到共用一套样式,采用px2rem-loader和px2rpx-loader进行代码的打包,细节如下: 由于UI设计图是在蓝湖上标注,宽度750,选择像素 PX 样式中直接 ...