使用kubeadm安装kubernetes 1.15
1、主机准备篇
使用vmware Workstation 10创建一台虚拟机,配置为2C/2G/50G,操作系统为CentOS Linux release 7.6.1810 (Core)。
IP地址为:192.168.198.136(DHCP自动分配的)
以root身份登录该主机,开始相关操作。
禁用SELinux
# setenforce 0
# vim /etc/selinux/config
SELINUX=enforcing改为SELINUX=disabled
禁用防火墙
# systemctl disable firewalld
# systemctl stop firewalld
在yum仓库中添加kubernetes
# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
安装docker、kubelet、kubeadm、kubectl、kubernetes-cni
# yum install docker kubelet kubeadm kubectl kubernetes-cni -y
# systemctl enable docker && systemctl start docker
# systemctl enable kubelet && systemctl start kubelet
# vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
# sysctl -p /etc/sysctl.d/k8s.conf
禁用交换分区
# swapoff -a
# sed -i '/ swap / s/^/#/' /etc/fstab
刚才的主机就作为kubernetes集群的主节点,现在克隆它,制造2台工作节点。
克隆完毕后,现在咱们的主机有3台:
192.168.198.136 2C/2G/50G 主节点
设置主机名:hostnamectl --static set-hostname master.k8s
192.168.198.131 2C/2G/50G 工作节点
设置主机名:hostnamectl --static set-hostname node1.k8s
192.168.198.132 2C/2G/50G 工作节点
设置主机名:hostnamectl --static set-hostname node2.k8s
为三台主机配置名称解析
# vim /etc/hosts
192.168.198.136 master.k8s
192.168.198.131 node1.k8s
192.168.198.133 node2.k8s
三台主机都得填写。
2、主节点初始化篇
由于初始化的过程中,要去k8s.gcr.io网站下载相关的镜像,而我们国内无法访问外网,所以只能另想其他办法。
找出需要下载的镜像列表
在主节点执行以下命令:
# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.15.0
k8s.gcr.io/kube-controller-manager:v1.15.0
k8s.gcr.io/kube-scheduler:v1.15.0
k8s.gcr.io/kube-proxy:v1.15.0
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1
这是我的结果,你在实验时,每个镜像的版本可能不一定是这样,但不影响你的实验。
下载每个镜像
既然国外无法下载,那就从国内下载。因为阿里云做了镜像,所以我们直接从阿里云下载。
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1
修改镜像的标签
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.0 k8s.gcr.io/kube-apiserver:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.15.0 k8s.gcr.io/kube-controller-manager:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.15.0 k8s.gcr.io/kube-scheduler:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.15.0 k8s.gcr.io/kube-proxy:v1.15.0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.10 k8s.gcr.io/etcd:3.3.10
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.3.1 k8s.gcr.io/coredns:1.3.1
开始初始化
# kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后,最后会出现一行添加工作节点的命令:
kubeadm join 192.168.198.136:6443 --token 5r4ez7.srmu7uaxghoiprpr \
--discovery-token-ca-cert-hash sha256:0f31247ea401aa84d1abda61b45a46d53777f1743391d31c2152b95b34e29a43
在主节点上运行kubectl
要想运行kubectl,需要设置环境变量:
# export KUBECONFIG=/etc/kubernetes/admin.conf
# echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
# kubectl get po -n kube-system
此时可以看到coredns这个pod还未运行,因为没有安装网络插件。
# kubectl get nodes
此时可以看到主节点的状态是NotReady,因为没有安装网络插件。
在将工作节点加入集群前,有一点需要提前做好准备,那就是:在工作节点上运行pod时,必须要有pause镜像的支持,否则任何pod都无法运行。
目前已知在工作节点上要运行的pod有:
kube-proxy
kube-flannel
pause
由于kube-flannel刚好可以在国内下载,所以我们要处理的有kube-proxy和pause。
处理方法同前面的步骤,直接从阿里云下载,然后打标签即可。
注意在2个工作节点都要如此操作。具体步骤不写出来,同上。
处理完之后,就可以开始下面的步骤了。
(我在这个地方栽了半天)
将另外2台工作节点加入到集群中
在node1.k8s上执行:
# kubeadm join 192.168.198.136:6443 \
--token 5r4ez7.srmu7uaxghoiprpr \
--discovery-token-ca-cert-hash \
sha256:0f31247ea401aa84d1abda61b45a46d53777f1743391d31c2152b95b34e29a43
在node2.k8s上执行:
# kubeadm join 192.168.198.136:6443 \
--token 5r4ez7.srmu7uaxghoiprpr \
--discovery-token-ca-cert-hash \
sha256:0f31247ea401aa84d1abda61b45a46d53777f1743391d31c2152b95b34e29a43
然后到主节点上查看节点是否进入集群:
# kubectl get nodes
此时发现2台工作节点已经进入集群,只是状态为NotReady。
查看节点NotReady的原因
# kubectl describe node node1.k8s
得知是CNI网络插件的原因。
安装网络插件,我们选择flannel:
# wget \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# kubectl apply -f kube-flannel.yml
稍等片刻,在主节点上再次查看各节点的状态,以及各pods的状态:
# kubectl get nodes

# kubectl get pods -n kube-system

到这里,我们使用kubeadm创建了一个kubernetes集群。该集群拥有3个节点,1个主节点,2个工作节点。
中间遇到的坎有:
1、因kube-proxy镜像无法从国内下载,导致2个工作节点上无法运行kube-proxy的pod,使得整体的集群无法成功。
2、同理,pause镜像也是同样的问题。
3、在1.15版本中,好像只能使用flannel网络插件。因为我在使用另一个插件weave-net时,总是报错:
open /run/flannel/subnet.env: no such file or directory,说明在新版的kubernetes中,只能使用flannel。
使用kubeadm安装kubernetes 1.15的更多相关文章
- 使用kubeadm 安装 kubernetes 1.15.1
简介: Kubernetes作为Google开源的容器运行平台,受到了大家的热捧.搭建一套完整的kubernetes平台,也成为试用这套平台必须迈过的坎儿.kubernetes1.5版本以及之前,安装 ...
- 在CentOS 7.6 以 kubeadm 安装 Kubernetes 1.15 最佳实践
前言 Kubernetes作为容器编排工具,简化容器管理,提升工作效率而颇受青睐.很多新手部署Kubernetes由于"scientifically上网"问题举步维艰,本文以实战经 ...
- Centos 使用kubeadm安装Kubernetes 1.15.3
本来没打算搞这个文章的,第一里面有瑕疵(没搞定的地方),第二在我的Ubuntu 18 Kubernetes集群的安装和部署 以及Helm的安装 也有安装,第三 和社区的问文章比较雷同 https:// ...
- 使用kubeadm安装Kubernetes 1.15.3 并开启 ipvs
一.安装前准备 机器列表 主机名 IP node-1(master) 1.1.1.101 node-2(node) 1.1.1.102 node-3(node) 1.1.1.103 设置时区 cp / ...
- Kubeadm安装Kubernetes 1.15.1
一.实验环境准备 服务器虚拟机准备 IP CPU 内存 hostname 192.168.198.200 >=2c >=2G master 192.168.198.201 >=2c ...
- kubeadm安装Kubernetes 1.15 实践
原地址参考github 一.环境准备(在全部设备上进行) 3 台 centos7.5 服务器,网络使用 Calico. IP地址 节点角色 CPU 内存 Hostname 10.0.1.45 mast ...
- Centos7 使用 kubeadm 安装Kubernetes 1.13.3
目录 目录 什么是Kubeadm? 什么是容器存储接口(CSI)? 什么是CoreDNS? 1.环境准备 1.1.网络配置 1.2.更改 hostname 1.3.配置 SSH 免密码登录登录 1.4 ...
- 使用 kubeadm 安装 kubernetes v1.16.0
近日通过kubeadm 安装 kubernetes v1.16.0,踩过不少坑,现记录下安装过程. 安装环境: 系 统:CentOS Linux release 7.6 Docke ...
- kubeadm安装kubernetes V1.11.1 集群
之前测试了离线环境下使用二进制方法安装配置Kubernetes集群的方法,安装的过程中听说 kubeadm 安装配置集群更加方便,因此试着折腾了一下.安装过程中,也有一些坑,相对来说操作上要比二进制方 ...
随机推荐
- Maven项目上有小红叉咋办
Maven项目上有小红叉咋办 创建maven项目之后,war工程如果目录不全的话会出现错误.这种情况就是把目录补全就可以了. 这种情况版本问题,点击那个最新版本的,会自动给加一段代码.(如果没有就自己 ...
- 使用Jedis操作Redis-使用Java语言在客户端操作---set类型
原文地址:http://www.cnblogs.com/lixianyuan-org/p/9509696.html 1 //测试set数据类型 2 /** 3 * 在Redis中,我们可以将Set类型 ...
- 梯度下降:SGD vs Momentum vs NAG vs Adagrad vs Adadelta vs RMSprop vs Adam
原文地址:https://www.jianshu.com/p/7a049ae73f56 梯度下降优化基本公式:\({\theta\leftarrow\theta-\eta\cdot\nabla_\th ...
- leetcode 596 BUG笔记
There is a table courses with columns: student and class Please list out all classes which have more ...
- jsk
题目描述 码队的女朋友非常喜欢玩某款手游,她想让码队带他上分.但是码队可能不会带青铜段位的女朋友上分,因为码队的段位太高(已经到达王者),恐怕不能和他的女朋友匹配游戏. 码队的女朋友有些失落,她希望能 ...
- jetson nano VNC
寻找比较好的远程桌面方式,最新系统里有写. ======================================================================= README ...
- Pregel Worker
- 1 新增硬盘挂载home文件夹。 2 修理扇区
一 挂载新硬盘 主机磁盘容量不够大时,想新增一颗新磁盘的时候.并将磁盘全部分割成单一分割槽,且将该分割槽挂载到/home目录,你该怎么做呢? 1 安装硬盘. 2 磁盘分区. 3 格式化磁盘 4 将 ...
- [转]PHP base64_encode 在URL地址参数编码上使用
因为我使用公钥,使用php的 openssl 加密之后的资料 base64_encode()字符串,然后放入请求 url 中当作参数,urlencode(base64_encode()),然后用 ur ...
- Wordpress 文章编辑页面添加 metabox
add_meta_box($id,$title,$callback,$screen,$context:,$priority); 参数 $id (字符串)(必需)Meta模块的 HTML"ID ...