CentOS7 部署K8S集群,最新版1.17.3-0
小白在网上找了很多关于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的更多相关文章
- CentOS7 部署K8S集群
虚拟机: VMware® Workstation 12 Pro 12.5.9 build-7535481操作系统:CentOS Linux release 7.6.1810 (Core) 部署 ...
- centos7.8 安装部署 k8s 集群
centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...
- Ansible自动化部署K8S集群
Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...
- 使用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 ...
- 二进制方法-部署k8s集群部署1.18版本
二进制方法-部署k8s集群部署1.18版本 1. 前置知识点 1.1 生产环境可部署kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kuberadm Kubea ...
- 【02】Kubernets:使用 kubeadm 部署 K8S 集群
写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...
- 部署K8S集群
1.Kubernetes 1.1.概念 kubernetes(通常称为k8s)用于自动部署.扩展和管理容器化应用程序的开源系统.它旨在提供“跨主机集群的自动部署.扩展以及运行应用程序容器的平台”.支持 ...
- 菜鸟系列k8s——快速部署k8s集群
快速部署k8s集群 1. 安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kuberne ...
- 使用RKE快速部署k8s集群
一.环境准备 1.1环境信息 IP地址 角色 部署软件 10.10.100.5 K8s Master Etcd.Control 10.10.100.17 K8s Worker1 Worker 10.1 ...
随机推荐
- Kubernetes系列三:二进制安装Kubernetes环境
安装环境: # 三个节点信息 192.168.31.11 主机名:env11 角色:部署Master节点/Node节点/ETCD节点 192.168.31.12 主机名:env12 角色:部署Node ...
- CodeForces 91B Queue (线段树,区间最值)
http://codeforces.com/problemset/problem/91/B B. Queue time limit per test: 2 seconds memory limit p ...
- IMX6开发板Qtopia2.2.0开发环境搭建以及编译镜像
搭建 Qtopia2.2.0 开发环境,需要先搭建 Android 的编译环境,然后在 Android 编译环境的基础上,再搭建 Qtopia2.2.0 编译环境.以下内容基于迅为-iMX6开发板.Q ...
- RDD(四)——transformation_key_value类型
这里所有算子均只适用于pairRDD.pairRDD的数据类型是(k,v)形式的键值对: PartitionBy(Partitioner) 对pairRDD进行分区操作,如果原有的partioner和 ...
- 电影画面赏析_唐顿庄园S01E01
唐顿庄园S01E01 1. 2. 3. 4. 5. 6. 7. 8.
- 谁能率先挖掘出5G金矿?
现在,消费者已经习惯4G的存在,它好像另外的一个太阳,点亮了夜生活,也丰富了白天的生活:随时随地的直播.视频通话.移动支付.嘀嘀打车等等,这些都因4G网络和智能手机而快速发展,帮助消费者清理碎片时间之 ...
- Java源码之ArrayList
本文源码均来自Java 8 总体介绍 Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类.Set和List两个类继承于它.Set中不能包含重复的元素,也没有顺序来存放. ...
- sqlserver 查询各个学生语文、数学、英语、历史课程成绩
-- 建表 插入数据 USE 你自己的数据库; CREATE TABLE Member( MID ) PRIMARY KEY, MName ) ); CREATE TABLE Course( FID ...
- [LC] 692. Top K Frequent Words
Given a non-empty list of words, return the k most frequent elements. Your answer should be sorted b ...
- mongo rename collection
db.getCollection('a').renameCollection("b"); db.getCollection('a').find({}, {_id: 0}).forE ...