kubeadm安装Kubernetes13.1集群-三
环境:
master: 192.168.3.100
node01: 192.168.3.101
node02: 192.168.3.102
关闭所有主机防火墙,selinux;
配置主机互信;
master:
1、设置docker和kubernetes的repo文件(阿里):
cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
vim kubernetes.repo
[kubernetes]
name=Kubernetes Repo
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
enabled=1
yum repolist #验证repo
scp docker-ce.repo kubernetes.repo node01:/etc/yum.repos.d/
scp docker-ce.repo kubernetes.repo node02:/etc/yum.repos.d/
2、安装docker、kubelet、kubeadm、kubectl
[root@master ~]# yum install epel-release -y
[root@master ~]# cd
[root@master ~]# wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
[root@master ~]# rpm --import yum-key.gpg
[root@master ~]# wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
[root@master ~]# rpm --import rpm-package-key.gpg
[root@master ~]# yum install docker-ce kubelet kubeadm kubectl
3、启动
(1)
[root@master ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-ip6tables
[root@master ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
创建/etc/sysctl.d/k8s.conf文件,添加如下内容:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
执行命令使修改生效:
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
[root@master ~]# systemctl daemon-reload
[root@master ~]# systemctl restart docker
(2)
IPvs:(我没有使用ipvs, 所以没有做这一步)
kube-proxy开启ipvs的前置条件:
在所有的Kubelet存在的节点执行以下脚本:
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
上面脚本创建了的/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。
使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令查看是否已经正确加载所需的内核模块。
接下来还需要确保各个节点上已经安装了ipset软件包: yum install ipset
为了便于查看ipvs的代理规则,最好安装一下管理工具ipvsadm : yum install ipvsadm。
如果以上前提条件如果不满足,则即使kube-proxy的配置开启了ipvs模式,也会退回到iptables模式。
在kubelet的配置文件/etc/sysconfig/kubelet,设置使用ipvs:
KUBE_PROXY_MODE=ipvs
(3)准备镜像
[root@master ~]# rpm -ql kubelet
/etc/kubernetes/manifests
/etc/sysconfig/kubelet
/etc/systemd/system/kubelet.service
/usr/bin/kubelet
[root@master ~]# systemctl enable kubelet #kubelet先设置开机启动,但是先不启动
[root@master ~]# systemctl enable docker
[root@master ~]# kubeadm init --help
[root@master ~]# kubeadm version #查看kubeadm的版本
[root@master ~]# kubeadm config images list #查看kubeadm需要的image版本,然后下载对应的镜像
由于国内不能访问Google,所以只能下载国内站点上的镜像,然后重新打标:
docker pull mirrorgooglecontainers/kube-apiserver:v1.13.1
docker pull mirrorgooglecontainers/kube-controller-manager:v1.13.1
docker pull mirrorgooglecontainers/kube-scheduler:v1.13.1
docker pull mirrorgooglecontainers/kube-proxy:v1.13.1
docker pull mirrorgooglecontainers/pause:3.1
docker pull mirrorgooglecontainers/etcd:3.2.24
docker pull coredns/coredns:1.2.6
docker pull registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
为了应对网络不畅通的问题,我们国内网络环境只能提前手动下载相关镜像并重新打 tag :
docker tag mirrorgooglecontainers/kube-apiserver:v1.13.1 k8s.gcr.io/kube-apiserver:v1.13.1
docker tag mirrorgooglecontainers/kube-controller-manager:v1.13.1 k8s.gcr.io/kube-controller-manager:v1.13.1
docker tag mirrorgooglecontainers/kube-scheduler:v1.13.1 k8s.gcr.io/kube-scheduler:v1.13.1
docker tag mirrorgooglecontainers/kube-proxy:v1.13.1 k8s.gcr.io/kube-proxy:v1.13.1
docker tag mirrorgooglecontainers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag coredns/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
docker tag registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64 quay.io/coreos/flannel:v0.10.0-amd64
docker rmi mirrorgooglecontainers/kube-apiserver:v1.13.1
docker rmi mirrorgooglecontainers/kube-controller-manager:v1.13.1
docker rmi mirrorgooglecontainers/kube-scheduler:v1.13.1
docker rmi mirrorgooglecontainers/kube-proxy:v1.13.1
docker rmi mirrorgooglecontainers/pause:3.1
docker rmi mirrorgooglecontainers/etcd:3.2.24
docker rmi coredns/coredns:1.2.6
docker rmi registry.cn-shenzhen.aliyuncs.com/cp_m/flannel:v0.10.0-amd64
(4)
[root@master ~]# vim /etc/sysconfig/kubelet #设置忽略Swap启动的状态错误
KUBELET_EXTRA_ARGS="--fail-swap-on=false"
初始化集群:
[root@master ~]# kubeadm init --kubernetes-version=v1.13.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
要开始使用集群,需要以常规用户身份运行以下命令:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config #root用户的话,这条命令就不用执行了
可以通过在每个节点上运行以下命令加入集群,但是现在不用添加:

sha256:3a5c7da23306cf1e869fec140e4d187056edf146affe5c6ee8007cc2de6b349b #初始化集群会生成
4、kubectl命令
[root@master ~]# kubectl get cs #检查各组件健康状况
[root@master ~]# kubectl get nodes #查看节点
[root@master ~]# kubectl get ns #查看所有名称空间
[root@master ~]# kubectl describe node node01 #查看一个节点的详细信息
[root@master ~]# kubectl cluster-info #查看集群信息
5、部署flannel
[root@master ~]# kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
[root@master ~]# kubectl get pods -n kube-system #查看当前节点所有pod状态,-n:指定namespace
node01:
1、
[root@master ~]# scp rpm-package-key.gpg node01:/root/
2、
[root@node01 ~]# yum install docker-ce kubelet kubeadm
[root@master ~]# scp /usr/lib/systemd/system/docker.service node01:/usr/lib/systemd/system/docker.service
[root@master ~]# scp /etc/sysconfig/kubelet node01:/etc/sysconfig/
[root@node01 ~]# systemctl daemon-reload
[root@node01 ~]# systemctl start docker
[root@node01 ~]# systemctl enable docker
[root@node01 ~]# systemctl enable kubelet
[root@node01 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-ip6tables
[root@node01 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
3、
[root@master ~]# scp myimages.gz node01:/root/ #将master的镜像打包copy到node01
[root@node01 ~]# docker load -i myimages.gz
[root@node01 ~]# docker tag fdb321fd30a0 k8s.gcr.io/kube-proxy:v1.13.1
[root@node01 ~]# docker tag 40a63db91ef8 k8s.gcr.io/kube-apiserver:v1.13.1
[root@node01 ~]# docker tag ab81d7360408 k8s.gcr.io/kube-scheduler:v1.13.1
[root@node01 ~]# docker tag 26e6f1db2a52 k8s.gcr.io/kube-controller-manager:v1.13.1
[root@node01 ~]# docker tag f59dcacceff4 k8s.gcr.io/coredns:1.2.6
[root@node01 ~]# docker tag 3cab8e1b9802 k8s.gcr.io/etcd:3.2.24
[root@node01 ~]# docker tag f0fad859c909 quay.io/coreos/flannel:v0.10.0-amd64
[root@node01 ~]# docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1
[root@node01 ~]# kubeadm join 192.168.3.100:6443 --token nscdt6.1f73g6w9t80tddx0 --discovery-token-ca-cert-hash
sha256:3a5c7da23306cf1e869fec140e4d187056edf146affe5c6ee8007cc2de6b349b --ignore-preflight-errors=Swap
node02 :
1、
[root@master ~]# scp rpm-package-key.gpg node02:/root/
[root@node02 ~]# yum install docker-ce kubelet kubeadm
[root@master ~]# scp /usr/lib/systemd/system/docker.service node02:/usr/lib/systemd/system/docker.service
[root@master ~]# scp /etc/sysconfig/kubelet node02:/etc/sysconfig/
[root@node02 ~]# systemctl daemon-reload
[root@node02 ~]# systemctl start docker
[root@node02 ~]# systemctl enable docker
[root@node02 ~]# systemctl enable kubelet
[root@node02 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-ip6tables
[root@node02 ~]# echo "1" >/proc/sys/net/bridge/bridge-nf-call-iptables
2、
[root@master ~]# scp myimages.gz node02:/root/ #将master的镜像copy到node02
[root@node02 ~]# docker load -i myimages.gz
[root@node02 ~]# docker tag fdb321fd30a0 k8s.gcr.io/kube-proxy:v1.13.1
[root@node02 ~]# docker tag 40a63db91ef8 k8s.gcr.io/kube-apiserver:v1.13.1
[root@node02 ~]# docker tag ab81d7360408 k8s.gcr.io/kube-scheduler:v1.13.1
[root@node02 ~]# docker tag 26e6f1db2a52 k8s.gcr.io/kube-controller-manager:v1.13.1
[root@node02 ~]# docker tag f59dcacceff4 k8s.gcr.io/coredns:1.2.6
[root@node02 ~]# docker tag 3cab8e1b9802 k8s.gcr.io/etcd:3.2.24
[root@node02 ~]# docker tag f0fad859c909 quay.io/coreos/flannel:v0.10.0-amd64
[root@node02 ~]# docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1
[root@node02 ~]# kubeadm join 192.168.3.100:6443 --token nscdt6.1f73g6w9t80tddx0 --discovery-token-ca-cert-hash
sha256:3a5c7da23306cf1e869fec140e4d187056edf146affe5c6ee8007cc2de6b349b --ignore-preflight-errors=Swap
最后:检查集群状况
[root@master ~]# kubectl get cs #检查各组件健康状况
[root@master ~]# kubectl get nodes #查看节点
[root@master ~]# kubectl get ns #查看所有名称空间
[root@master ~]# kubectl describe node node01 #查看一个节点的详细信息
[root@master ~]# kubectl cluster-info #查看集群信息
kubeadm安装Kubernetes13.1集群-三的更多相关文章
- kubernetes系列03—kubeadm安装部署K8S集群
本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...
- Kubeadm安装的K8S集群1年证书过期问题的解决思路
这个问题,很多使用使用kubeadm的用户都会遇到. 网上也有类似的帖子,从源代码编译这种思路, 在生产环境,有些不现实. 还是使用kubeadm的命令操作,比较自然一点. 当然,自行生成一套证书,也 ...
- Kubeadm 安装部署 Kubernetes 集群
阅读目录: 准备工作 部署 Master 管理节点 部署 Minion 工作节点 部署 Hello World 应用 安装 Dashboard 插件 安装 Heapster 插件 后记 相关文章:Ku ...
- centos8安装fastdfs6.06集群方式三之:storage的安装/配置/运行
一,查看本地centos的版本 [root@localhost lib]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core) 说 ...
- kubernetes kubeadm部署高可用集群
k8s kubeadm部署高可用集群 kubeadm是官方推出的部署工具,旨在降低kubernetes使用门槛与提高集群部署的便捷性. 同时越来越多的官方文档,围绕kubernetes容器化部署为环境 ...
- Kubernetes探索学习001--Centos7.6使用kubeadm快速部署Kubernetes集群
Centos7.6使用kubeadm快速部署kubernetes集群 为什么要使用kubeadm来部署kubernetes?因为kubeadm是kubernetes原生的部署工具,简单快捷方便,便于新 ...
- 用 edgeadm 一键安装边缘 K8s 集群和原生 K8s 集群
背景 目前,很多边缘计算容器开源项目在使用上均存在一个默认的前提:用户需要提前准备一个标准的或者特定工具搭建的 Kubernetes 集群,然后再通过特定工具或者其他方式在集群中部署相应组件来体验边缘 ...
- Kubernetes后台数据库etcd:安装部署etcd集群,数据备份与恢复
目录 一.系统环境 二.前言 三.etcd数据库 3.1 概述 四.安装部署etcd单节点 4.1 环境介绍 4.2 配置节点的基本环境 4.3 安装部署etcd单节点 4.4 使用客户端访问etcd ...
- 使用yum安装CDH Hadoop集群
使用yum安装CDH Hadoop集群 2013.04.06 Update: 2014.07.21 添加 lzo 的安装 2014.05.20 修改cdh4为cdh5进行安装. 2014.10.22 ...
随机推荐
- 体验Windows 2008 R2的RemoteApp
[说明]这是<中小企业虚拟机解决方案大全>一书中部分章节的摘抄.该书预计于2009年12月初由<电子工业出版社>出版,敬请期待! 通过远程桌面服务,组织可以为用户提供随时随 ...
- 初探STL之算法
算法 STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成.要使用 STL中的算法函数必须包括头文件<algor ...
- poj(1011)——Sticks(经典的dfs+剪枝)
题目的大致意思是: 如今有n根木棍,然后须要把它们拼成相同长度的木棍,问满足这个条件的最短的长度是多少? 想法嘛:那肯定是dfs把长度搜一遍就好,但问题的关键是这里会超时.那么就要用到剪枝的原理了. ...
- LInux查看CPU状态
1.htop 2.top 内容解释: PID:进程的ID USER:进程所有者 PR:进程的优先级别,越小越优先被执行 NInice:值 VIRT:进程占用的虚拟内存 RES:进程占用的物理内存 SH ...
- java开始到熟悉62
(说明:昨天网络出现了问题导致昨天的没有按时上传,这篇算是昨天的,今天晚上照常上传今天的内容) 本次主题:数组拷贝.排序.二分法 1.数组拷贝 a.java.lang中System 类包含一些有用的类 ...
- Java多线程面试题归纳
1.多线程有哪几种实现方法?举个样例说明下线程的同步. (1)Java多线程有两种实现方式:继承Thread类和实现Runnable接口,Thread就是实现了Runnable接口. 两个最简单的线程 ...
- 安装Sublime配合quick-cocos2d-x开发
下载地址 Sublime下载地址 安装 Package Control 在Sublime中,按Ctrl+~打开控制台,输入: Sublime Text2 import urllib2,os; pf=' ...
- 转移iOS App常见问题和回答
打算转移公司的app,做下转移的记录 怎样转移app官方的一个视频:http://v.youku.com/v_show/id_XNjI0MjQxMzI0.html 以下是apple官方转移常见问题回答 ...
- VC++中全局变量的问题(转)
全局变量一般这样定义:1.在一类的.cpp中定义 int myInt;然后再在要用到的地方的.cpp里extern int myInt:这样就可以用了. 2.在stdafx.cpp中加入:int my ...
- BZOJ5379: Tree
BZOJ5379: Tree Description JudgeOnline/upload/201806/1.pdf 题解Here! 题目大意就是:1. 换根.2. 对$LCA(u,v)$的子树修改. ...