在CentOS 7+ 安装Kubernetes入门(单Master)
TL;DR;
科学上网,科学上网,科学上网,重要的事情说三次。如果不会科学上网,这篇文章就没有看下去的意义。作为一个技术人员如果不愿意折腾,很难有所作为。作为一个单纯的技术人员,最好把心思放在技术上,做到真正的科学上网。这里不会教如何科学上网,请大家自行摸索。
服务器
| 名称 | 操作系统 | 配置 | IP |
| master | CentOS 7 | 4核2G内存 | 192.168.132.132 |
| node1 | CentOS 7 | 2核2G内存 | 192.168.132.130 |
Master安装
1. 修改主机名为master。
hostnamectl set-hostname master
2. 关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld

vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,重启机器

3.安装docker
yum install -y docker
systemctl enable docker && systemctl start docker
docker info查看docker信息,记录docker的版本,以及cgroup信息:

Docker从1.13版本开始调整了默认的防火墙规则,禁用了iptables filter表中FOWARD链,这样会引起Kubernetes集群中跨Node的Pod无法通信,需要执行以下指令:
systemctl stop docker
iptables -P FORWARD ACCEPT
systemctl start docker
4. 设置net.bridge.bridge-nf-call-iptables
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

参考:https://kubernetes.io/docs/setup/independent/install-kubeadm/
5. 挂代理(科学上网)
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export no_proxy="localhost, 192.168.132.132" #192.168.132.132为master主机IP
cat <<EOF >> /etc/sysconfig/docker
HTTP_PROXY='http://127.0.0.1:8118'
HTTPS_PROXY='http://127.0.0.1:8118'
EOF
systemctl restart docker
6. 安装kubeadm, kubelet, kubectl
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
7. 配置cgroup,使/etc/systemd/system/kubelet.service.d/10-kubeadm.conf中的cgroup的值和docker info中的cgroup一致。然后重启kubelet:
systemctl daemon-reload
systemctl restart kubelet
8.更新yum获取最新的kubeadm
yum update
9. 关闭系统的Swap:
swapoff -a
10. kubeadm init,这里选用Calico的网络,因此设置--pod-network-cidr=192.168.0.0/16。
kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.132.132
漫长等待,下载镜像会比较耗时,如果长时间没反应,而且没有下载镜像的话,可以kubeadm reset,重启kubelet,再kubeadm init 。直到成功,看到以下界面:

记录下加入节点的指令:kubeadm join ...
11. 设置kubelet config
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
12. 安装网络,这里使用Calico。
kubectl apply -f https://docs.projectcalico.org/v3.0/getting-started/kubernetes/installation/hosted/kubeadm/1.7/calico.yaml

Node安装
按照Master安装的1-9步骤进行安装。其中调整如下:
1. 修改主机名为nodex(这里是node1)。
hostnamectl set-hostname node1
5. 挂代理(科学上网)
export http_proxy=http://127.0.0.1:8118
export https_proxy=http://127.0.0.1:8118
export no_proxy="localhost, 192.168.132.132, 192.168.132.130" #192.168.132.132为master主机IP,192.168.132.130为node1主机IP
cat <<EOF >> /etc/sysconfig/docker
HTTP_PROXY='http://127.0.0.1:8118'
HTTPS_PROXY='http://127.0.0.1:8118'
EOF
systemctl restart docker
10. 执行安装Master时输出的kubeadm join ...

在Master上执行kubectl get nodes查看添加结果:

11. 给node打标签(可选)
kubectl label node node1 kubernetes.io/role=node

补充说明:拉取镜像有时会比较耗时,请耐心等待,相同的镜像可以考虑从master拷贝。
12. 部署一个nginx检查一下(可选)
nginx.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
kubernetes.io/role: node
containers:
- name: nginx
image: nginx:1.13
ports:
- containerPort: 80 --- kind: Service
apiVersion: v1
metadata:
name: nginx
labels:
app: nginx
namespace: default
spec:
selector:
app: nginx
type: NodePort
ports:
- name: nginx
nodePort: 30000
port: 80
protocol: TCP
targetPort: 80

使用Node1的地址http://192.168.132.130:30000/进行访问:

参考资料
https://kubernetes.io/docs/setup/independent/install-kubeadm/
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
在CentOS 7+ 安装Kubernetes入门(单Master)的更多相关文章
- 使用Kubeadm安装Kubernetes【单Master节点】
参考:Kubernetes官方文档 Kubernetes安装方案选择 Centos 7 配置科学上网 安装Calico网络插件 kubernetes-dashboard部署 Kubernetes ...
- 在CentOS 7+ 安装Kubernetes入门
TL;DR; 科学上网,科学上网,科学上网,重要的事情说三次.如果不会科学上网,这篇文章就没有看下去的意义.作为一个技术人员如果不愿意折腾,很难有所作为.作为一个单纯的技术人员,最好把心思放在技术上, ...
- 【k8s】centos上安装kubernetes,报错Error:docker-ce-cli conflicts with 2:docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64
使用命令: yum install kubernetes 报错: Error: docker-ce-cli conflicts with :docker--.git07f3374.el7.centos ...
- CentOS 7 安装Kubernetes(单机版)
一.关闭CentOS自带的防火墙服务 # systemctl disable firewalld # systemctl stop firewalld 二.安装etcd和Kubernetes软件( ...
- 安装k8s,单master脚本
这个以一个普通xxx帐户运行即可. 因为上面root帐号作了sudoer的操作的. 还有,最好将xxx帐号加入docker组,这样xxx也可以执行docker命令了. 可以看到,这个脚本还需要其它目录 ...
- Centos 下面安装 docker
试过了虚拟机VM ,今天尝试在虚拟机centos 中安装 docker ,入门是看的阮一峰的http://www.ruanyifeng.com/blog/2018/02/docker-tutorial ...
- Kubernetes入门(一)——Kubernetes v1.18.5 安装部署
Kubernetes的安装有两种方式:一是使用各个厂商封装的Kubernetes发行版,优点是可以一键安装部署,操作简单,缺点也很明显,若安装过程中某一步骤出现问题,很难定位处理:二是使用官方提供的k ...
- Kubernetes 入门-学习-nginx安装-dashboard安装
一.入门 1.Kubernetes中文社区---http://docs.kubernetes.org.cn/ 2.Kubernetes集群组件: - etcd 一个高可用的K/V键值对存储和服务发现系 ...
- CentOS 7.6 使用kubeadm安装Kubernetes 13
实验环境:VMware Fusion 11.0.2 操作系统:CentOS 7.6 主机名 IP地址 CPU 内存 k8s2m 172.16.183.151 2核 4G k8s2n 172.16.18 ...
随机推荐
- Tour HDU - 3488 有向环最小权值覆盖 费用流
http://acm.hdu.edu.cn/showproblem.php?pid=3488 给一个无源汇的,带有边权的有向图 让你找出一个最小的哈密顿回路 可以用KM算法写,但是费用流也行 思路 1 ...
- Spring学习(十八)Bean 的三种依赖注入方式介绍
依赖注入:让调用类对某一接口实现类的依赖关系由第三方注入,以移除调用类对某一接口实现类的依赖.接下来将详细的向大家介绍Spring容器支持的三种依赖注入的方式以及具体配置方法:• 属性注入方法• ...
- 数据库join union 区别
join 是两张表做交连后里面条件相同的部分记录产生一个记录集,union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集. 1.JOIN和UNION区别 join 是两张表做交连后里 ...
- QT 出现信号槽不触发的问题
主要有以下三点: 1)槽函数未声明为 slots 类型, 信号函数未声明为 signals所致 2)槽函数和信号函数的参数不一致所致 3)connect关联时失败
- MySQL MyISAM引擎转换为InnoDB操作记录
进入mysql命令行模式: # mysql -uroot -ppwd 1.查看mysql提供什么存储引擎: mysql> show engines; 2.查看mysql当前提供的默认存储引擎: ...
- auth模块(登录验证)
settings:'django.contrib.auth.middleware.AuthenticationMiddleware',#这个是认证的中间件,认证成功的话,就可以把这个用户user封装到 ...
- Confluence 6 MySQL 测试你的数据库连接
在你的数据库设置界面,有一个 测试连接(Test connection)按钮可以检查: Confluence 可以连接你的数据库服务器 数据库字符集,隔离级别和存储引擎是正确的 你的数据库用户有正确的 ...
- Confluence 6 布局高级自定义
重载 Velocity 模板 velocity 目录是 Confluence Velocity 模板文件进行搜索时候需要的文件夹.例如,你可以通过将你的 Velocity 文件使用正确的文件名放置到正 ...
- 第二十单元 计划任务crond服务
什么是计划任务:后台运行,到了预定的时间就会自动执行的任务,前提是:事先手动将计划任务设定好.这就用到了crond服务 crond服务相关的软件包[root@MiWiFi-R3-srv ~]# rpm ...
- C#关于线程的问题
1.通过System.threading.Thread类可以创建新的线程,并在线程堆栈中运行静态和动态的实例,可以通过Thread类的构造方法传递一个无参数,并且不返回的委托, class Progr ...