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/

https://brickyang.github.io/2017/01/14/CentOS-7-%E5%AE%89%E8%A3%85-Shadowsocks-%E5%AE%A2%E6%88%B7%E7%AB%AF/

在CentOS 7+ 安装Kubernetes入门(单Master)的更多相关文章

  1. 使用Kubeadm安装Kubernetes【单Master节点】

    参考:Kubernetes官方文档 Kubernetes安装方案选择    Centos 7 配置科学上网 安装Calico网络插件 kubernetes-dashboard部署 Kubernetes ...

  2. 在CentOS 7+ 安装Kubernetes入门

    TL;DR; 科学上网,科学上网,科学上网,重要的事情说三次.如果不会科学上网,这篇文章就没有看下去的意义.作为一个技术人员如果不愿意折腾,很难有所作为.作为一个单纯的技术人员,最好把心思放在技术上, ...

  3. 【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 ...

  4. CentOS 7 安装Kubernetes(单机版)

    一.关闭CentOS自带的防火墙服务 #  systemctl disable firewalld # systemctl  stop firewalld 二.安装etcd和Kubernetes软件( ...

  5. 安装k8s,单master脚本

    这个以一个普通xxx帐户运行即可. 因为上面root帐号作了sudoer的操作的. 还有,最好将xxx帐号加入docker组,这样xxx也可以执行docker命令了. 可以看到,这个脚本还需要其它目录 ...

  6. Centos 下面安装 docker

    试过了虚拟机VM ,今天尝试在虚拟机centos 中安装 docker ,入门是看的阮一峰的http://www.ruanyifeng.com/blog/2018/02/docker-tutorial ...

  7. Kubernetes入门(一)——Kubernetes v1.18.5 安装部署

    Kubernetes的安装有两种方式:一是使用各个厂商封装的Kubernetes发行版,优点是可以一键安装部署,操作简单,缺点也很明显,若安装过程中某一步骤出现问题,很难定位处理:二是使用官方提供的k ...

  8. Kubernetes 入门-学习-nginx安装-dashboard安装

    一.入门 1.Kubernetes中文社区---http://docs.kubernetes.org.cn/ 2.Kubernetes集群组件: - etcd 一个高可用的K/V键值对存储和服务发现系 ...

  9. 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 ...

随机推荐

  1. shell中的dd命令使用详解

    一.dd命令的解释 dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换. 注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512:c=1:k=1024:w=2 参数注释: 1. ...

  2. 如何将Tomcat添加到服务中【笔记】

    tomcat中自带有添加服务的批处理,所以只需要从命令行界面进入到需要添加到服务的tomcat目录中,执行service.bat install 命令就可以自动添加默认名称的tomcat服务了. 该批 ...

  3. 通过python操作smtplib模块发送邮件

    # gconf.py SMTP_SERVER_HOST='smtp.exmail.qq.com' SMTP_SERVER_PORT=25 SMTP_USER='jack@qq.com' # 邮箱客户端 ...

  4. 前端 ----jQuery的属性操作

    04-jQuery的属性操作   jquery的属性操作模块分为四个部分:html属性操作,dom属性操作,类样式操作和值操作 html属性操作:是对html文档中的属性进行读取,设置和移除操作.比如 ...

  5. 监听本机tcp和udp的端口

    #!/bin/bash #tcp part port1=`netstat -an|grep LISTEN|egrep "0.0.0.0|:::"|awk '/^tcp/ {prin ...

  6. Python-数据类型 主键auto_increment

    MySQL数据操作: DML========================================================在MySQL管理软件中,可以通过SQL语句中的DML语言来实 ...

  7. Docker快速搭建WordPress博客网站

    WordPress WordPress是一个非常著名的PHP编写的博客平台,发展到目前为止已经形成了一个庞大的网站平台系统.在WP上有规模庞大的插件和主题,可以帮助我们快速建立一个博客甚至网站. 在W ...

  8. centos6.5 python命令行模式左右建无法使用

    我的虚拟机是centos6.5,自带python2.6:安装了Python2.7(安装了pip管理工具)后,在python2.7命令行模式下,左右键及退格键无法使用,基于以上情况,我进行了百度: 第一 ...

  9. Synchronizing timer

    http://blog.csdn.net/zjq001x/article/details/53107159 集合点: 简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存 ...

  10. swift 学习- 10 -- 类和结构体

    // '类和结构体' 是人们构建代码所使用的一种通用且灵活的构造体, 我们可以使用完全相同的语法规则来为 '类和结构体' 定义属性 (变量 和 常量) 和添加方法, 从而扩展 类和结构体 的功能 // ...