小白在网上找了很多关于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. Kubernetes系列二: 使用kubeadm安装k8s环境

    环境 三台主机,一台master,两台node 作为master 作为node节点 作为node节点 每台主机Centos版本使用 CentOS Linux release 7.6.1810 (Cor ...

  2. xcode垃圾目录以及Mac隐藏显示文件快捷键

    ~/Library/Developer/Xcode/DerivedData 显示:defaults write com.apple.finder AppleShowAllFiles -bool tru ...

  3. Nmap_使用介绍

    Nmap 注意,本文仅是作为课余时间的学习了解,请不要做有关违反法律法规的事情,违者自行承担后果!!! 环境centos7.7yum -y install nmap 命令操作 1.扫描单个目标 1. ...

  4. rest framework-版本-长期维护

    ###############  版本   ############### # # 版本的问题: # rest_framework.versioning.URLPathVersioning # 一般就 ...

  5. 正则表达式awk学习(三)

    awk:格式化文本输出 gawk - pattern scanning and processing language awk:gawk的符号链接 基本用法:gawk [options] 'progr ...

  6. sqlserver命令创建数据库和表 demo

    由于sqlserver用起来很不爽 可以尝试用vscode+sqlserver插件玩玩 友情提示 在vscode中新建一个.sql 并配置好与sqlserver的连接 利用sql会有提示创建表 数据库 ...

  7. 前端-bootstrap-长期维护

     ###############    bootstrap简介     ################ Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. ...

  8. MAC地址和IP地址是否缺一不可

    答案是肯定的,我们来具体分析: 在网络传输的过程中,第一次将信息从A端发往B端时,首先在A端需要将信息从应用层开始到物理层进行逐层封装,到达B端后再从物理层到应用层进行逐层分用解包,最后拿到信息. 信 ...

  9. vue-cli3初始化项目

    1 npm install -g @vue/cli 创建配置 创建 1 vue create vue-app 选择配置 1234 ? Please pick a preset: (Use arrow ...

  10. java中字符串相等判断

    字符串的判断有2种: 1.判断地址是否相等  用:== 2.判断值是否相等  用:equals方法 Object类作为所有类的超类,而Object类的equals方法是直接比较地址的,源码如下: pu ...