k8s集群的安装

1、实验描述

通过搭建 K8S 的集群,来学习对容器的编排

2、实验环境

【你可能需要】【CentOS 7 搭建模板机】点我快速打开文章

【你可能需要】【VMware 从模板机快速克隆多台】点我快速打开文章

【你可能需要】【CentOS 7 命令行显示优化】点我快速打开文章

【你可看需要】【CentOS 7 配置yum源】点我快速打开文章

虚拟机:

  • 系统:CenOS 7.6
  • 内存:3-4 G+
  • 数量:3台
  • 硬盘:50G+
  • 要求:纯系统

物理机:Windows 10

3、实验工具

陆续上传中

4、实验步骤

4.1 k8s的架构

除了核心组件,还有一些推荐的 Add-ons

组件名称 说明
kube-dns 负责为整个集群提供DNS服务
Ingress Controller 为服务提供外网入口
Heapster 提供资源监控
Dashboard 提供GUI
Federation 提供跨可用区的集群
Fluentd-elasticsearch 提供集群日志采集、存储与查询

4.2 修改IP地址、主机和host解析

1. k8s-master

hostnamectl set-hostname k8s-master
ifconfig eth0|awk 'NR==2{print $2}'
IP=$(ifconfig eth0|awk 'NR==2{print $2}')
sed -i "s#$IP#10.0.0.11#g" /etc/sysconfig/network-scripts/ifcfg-eth0
grep 10.0.0.11 /etc/sysconfig/network-scripts/ifcfg-eth0
cat >>/etc/hosts <<EOF
10.0.0.11  k8s-master
10.0.0.12  k8s-node-1
10.0.0.13  k8s-node-2
EOF
tail -3 /etc/hosts
systemctl restart network

2. k8s-node-1

hostnamectl set-hostname k8s-node-1
ifconfig eth0|awk 'NR==2{print $2}'
IP=$(ifconfig eth0|awk 'NR==2{print $2}')
sed -i "s#$IP#10.0.0.12#g" /etc/sysconfig/network-scripts/ifcfg-eth0
grep 10.0.0.12 /etc/sysconfig/network-scripts/ifcfg-eth0
cat >>/etc/hosts <<EOF
10.0.0.11  k8s-master
10.0.0.12  k8s-node-1
10.0.0.13  k8s-node-2
EOF
tail -3 /etc/hosts
systemctl restart network

3. k8s-node-2

hostnamectl set-hostname k8s-node-2
ifconfig eth0|awk 'NR==2{print $2}'
IP=$(ifconfig eth0|awk 'NR==2{print $2}')
sed -i "s#$IP#10.0.0.13#g" /etc/sysconfig/network-scripts/ifcfg-eth0
grep 10.0.0.13 /etc/sysconfig/network-scripts/ifcfg-eth0
cat >>/etc/hosts <<EOF
10.0.0.11  k8s-master
10.0.0.12  k8s-node-1
10.0.0.13  k8s-node-2
EOF
tail -3 /etc/hosts
systemctl restart network

4.3 master 节点安装 etcd

#安装软件
yum install etcd -y &>/dev/null
echo $?

#修改/etc/etcd/etcd.conf配置文件
sed -i \
  's#^ETCD_LISTEN_CLIENT_URLS.*#ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"#g' \
  /etc/etcd/etcd.conf
sed -i \
 's#^ETCD_ADVERTISE_CLIENT_URLS.*#ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"#g' \
 /etc/etcd/etcd.conf
cat /etc/etcd/etcd.conf

#启动和自启动
systemctl start etcd.service
systemctl enable etcd.service

#验证结果
etcdctl set testdir/testkey0 0
etcdctl get testdir/testkey0
etcdctl -C http://10.0.0.11:2379 cluster-health

注意:etcd 原生支持做集群

4.4 master 节点安装 kubernetes

#安装软件
yum install kubernetes-master.x86_64 -y &>/dev/null
echo $?

#修改/etc/kubernetes/apiserver配置文件
sed -i 's#127.0.0.1#0.0.0.0#g' /etc/kubernetes/apiserver
sed -i 's#0.0.0.0:2379#10.0.0.11:2379#g' /etc/kubernetes/apiserver
sed -i '11a KUBE_API_PORT="--port=8080"' /etc/kubernetes/apiserver
sed -i 's#ServiceAccount,##g' /etc/kubernetes/apiserver
cat /etc/kubernetes/apiserver

#修改/etc/kubernetes/config配置文件
sed -i 's#127.0.0.1:8080#10.0.0.11:8080#g' /etc/kubernetes/config
grep 10.0.0.11:8080 /etc/kubernetes/config

#启动和自启动
systemctl enable kube-apiserver.service
systemctl restart kube-apiserver.service
systemctl enable kube-controller-manager.service
systemctl restart kube-controller-manager.service
systemctl enable kube-scheduler.service
systemctl restart kube-scheduler.service

#验证结果
kubectl get componentstatus

4.5 node 节点安装 kubernetes

#安装软件
yum install kubernetes-node.x86_64 -y &>/dev/null
echo $?

#修改etc/kubernetes/config配置文件
sed -i 's#127.0.0.1:8080#10.0.0.11:8080#g' /etc/kubernetes/config
grep 10.0.0.11:8080 /etc/kubernetes/config

#修改/etc/kubernetes/kubelet配置文件
ifconfig eth0|awk 'NR==2{print $2}'
IP=$(ifconfig eth0|awk 'NR==2{print $2}')

grep 127.0.0.1 /etc/kubernetes/kubelet

sed -i \
  's#address=127.0.0.1#address=0.0.0.0#g' \
  /etc/kubernetes/kubelet
sed -i \
  '8a KUBELET_PORT="--port=10250"' \
  /etc/kubernetes/kubelet
sed -i \
  "s#override=127.0.0.1#override=$IP#g" \
  /etc/kubernetes/kubelet
sed -i \
  's#127.0.0.1#10.0.0.11#g' \
  /etc/kubernetes/kubelet
cat /etc/kubernetes/kubelet

#启动和自启动
systemctl enable kubelet.service
systemctl start kubelet.service
systemctl enable kube-proxy.service
systemctl start kube-proxy.service

#在master节点检查
kubectl get nodes

4.6 所有节点配置 flannel 网络

#所有节点
yum install flannel -y &>/dev/null
echo $?

sed -i \
  's#127.0.0.1#10.0.0.11#g' \
  /etc/sysconfig/flanneld

grep 10.0.0.11 /etc/sysconfig/flanneld

#master节点:
etcdctl mk /atomic.io/network/config   '{ "Network": "172.16.0.0/16" }'
yum install docker -y &>/dev/null
systemctl enable flanneld.service
systemctl restart flanneld.service
systemctl enable docker
systemctl restart docker
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service

#node节点:
systemctl enable flanneld.service
systemctl restart flanneld.service
systemctl enable docker
systemctl restart docker
systemctl restart kubelet.service
systemctl restart kube-proxy.service

4.7 配置 master 为镜像仓库

#所有节点
#修改/etc/sysconfig/docker配置文件
sed -i \
  "s#^OPTIONS.*#OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --registry-mirror=https://registry.docker-cn.com --insecure-registry=10.0.0.11:5000'#g" \
  /etc/sysconfig/docker

#查看
sed -n '4p' /etc/sysconfig/docker

#修改bug
sed -i \
  '17a ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT' \
  /usr/lib/systemd/system/docker.service

#查看
grep FORWARD /usr/lib/systemd/system/docker.service

systemctl daemon-reload
systemctl restart docker

#master节点
#上传registry压缩包

#导入镜像
docker load -i registry.tar.gz

#启动容器
docker run -d -p 5000:5000 --restart=always --name registry \
-v /opt/myregistry:/var/lib/registry  registry

#查看
docker ps

【后续文章】编辑中

001-k8s集群的安装的更多相关文章

  1. k8s第二回之k8s集群的安装

    1. k8s集群的安装 目录 1. k8s集群的安装 1.架构: 2.环境准备 3.master节点安装etcd 4. master节点安装kubernetes 5.node节点安装kubernete ...

  2. Istio(二):在Kubernetes(k8s)集群上安装部署istio1.14

    目录 一.模块概览 二.系统环境 三.安装istio 3.1 使用 Istioctl 安装 3.2 使用 Istio Operator 安装 3.3 生产部署情况如何? 3.4 平台安装指南 四.Ge ...

  3. 在k8s集群中安装rook-ceph 1.8版本步骤

    官方文档地址:https://rook.io/docs/rook/v1.8/quickstart.html Kubernetes 最小版本号 Kubernetes 最小版本号:Kubernetes v ...

  4. k8s集群中安装rook-ceph

    容器的持久化存储 容器的持久化存储是保存容器存储状态的重要手段,存储插件会在容器里挂载一个基于网络或者其他机制的远程数据卷,使得在容器里创建的文件,实际上是保存在远程存储服务器上,或者以分布式的方式保 ...

  5. 超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!

    在2018年年初,Jenkins X首次发布,它由Apache Groovy语言的创建者Jame Strachan创建.Jenkins X 是一个高度集成化的 CI/CD 平台,基于 Jenkins ...

  6. 在k8s集群中安装traefik,并结合kuboard界面使用

    安装traefik 参考步骤:https://blog.51cto.com/u_13760351/2764008?xiangguantuijian&01 修改好的四个yaml文件下载地址:ht ...

  7. 从0到1搭建k8s集群系列1:安装虚拟机及docker

    前言 本系列文章记录了本人学习k8s集群搭建的过程,从k8s基本组件的安装.到部署mysql服务到k8s集群.部署web项目到k8s集群以及安装可视化界面管理工具kuboard. 因为k8s的组件安装 ...

  8. 菜鸟系列k8s——快速部署k8s集群

    快速部署k8s集群 1. 安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kuberne ...

  9. 使用kubectl管理Kubernetes(k8s)集群:常用命令,查看负载,命名空间namespace管理

    目录 一.系统环境 二.前言 三.kubectl 3.1 kubectl语法 3.2 kubectl格式化输出 四.kubectl常用命令 五.查看kubernetes集群node节点和pod负载 5 ...

随机推荐

  1. Ubuntu 18.04安装Conda、Jupyter Notebook、Anaconda

    1.Conda是一个开源的软件包管理系统和环境管理系统,它可以作为单独的纯净工具安装在系统环境中,有的python库无法用conda获得时,conda允许在conda环境中利用Pip获取包文件.可以将 ...

  2. JSP知识总结

    day11 JSP入门 1 JSP概述 1.1 什么是JSP JSP(Java Server Pages)是JavaWeb服务器端的动态资源.它与html页面的作用是相同的,显示数据和获取数据. 1. ...

  3. [C10] 异常检测(Anomaly Detection)

    异常检测(Anomaly Detection) 问题的动机 (Problem Motivation) 异常检测(Anomaly detection)问题是机器学习算法中的一个常见应用.这种算法的有趣之 ...

  4. Python学习笔记2基本语法规则_20170611

    # 1.print 显示示例 print('Hello, World!') 逗号分割变量,输出插入空格 name = 'BB' print('AA', name) # output: >> ...

  5. 《为什么说 Prometheus 是足以取代 Zabbix 的监控神器?》

    为什么说 Prometheus 是足以取代 Zabbix 的监控神器?   Kuberneteschina 致力于提供最权威的 Kubernetes 技术.案例与Meetup! ​关注他 12 人赞同 ...

  6. zz自动驾驶复杂环境下高精度定位技术

    今天为大家分享下,自动驾驶在复杂环境下的高精度定位技术. 定位/导航负责实时提供载体的运动信息,包括载体的:位置.速度.姿态.加速度.角速度等信息. 自动驾驶对定位系统的基本要求: 1. 高精度:达到 ...

  7. vs code 中配置git go

    { "window.zoomLevel": 1, "editor.fontSize": 15, //"files.autoSave": &q ...

  8. Java 虚拟机编程接口JVMIT

    JVMTI(JVM Tool Interface)是 Java 虚拟机所提供的 native 编程接口,是 JVMPI(Java Virtual Machine Profiler Interface) ...

  9. usb设备在sysfs中的命名规范

    "root-hub的编号"-"设备(或者hub)插入的端口号"[."设备(或者hub)插入的端口号"]:"USB设备配置号&quo ...

  10. [算法模版]Tarjan爷爷的几种图论算法

    [算法模版]Tarjan爷爷的几种图论算法 前言 Tarjan爷爷发明了很多图论算法,这些图论算法有很多相似之处(其中一个就是我都不会).这里会对这三种算法进行简单介绍. 定义 强连通(strongl ...