K8S官网文档:https://kubernetes.io/zh/docs/home/

文章目录

  • 前言
  • 一、K8S核心特性
  • 二、K8S集群安装
    • 1.安装K8S集群
      • 1、关闭防火墙
      • 2、关闭 selinux
      • 3、关闭 swap
      • 4、给三台机器分别设置主机名
      • 5、在 k8s‐master机器添加hosts,执行如下命令,ip需要修改成你自己机器的ip
      • 6、将桥接的IPv4流量传递到iptables
      • 7、设置时间同步
      • 8、添加k8s yum源
      • 9、如果之前安装过k8s,先卸载旧版本
      • 10、查看可以安装的版本
      • 11、安装kubelet、kubeadm、kubectl 指定版本,我们使用kubeadm方式安装k8s集群
      • 12、开机启动kubelet
      • 13、初始化操作
    • 2.用K8S部署Nginx
  • 三、总结

前言

K8S 是Kubernetes的全称,用于自动部署、扩展和管理“容器化(containerized)应用程序”的开源系统,K8S 是 负责自动化运维管理多个 Docker 程序的集群。


一、K8S核心特性

  • 服务发现与负载均衡:无需修改你的应用程序即可使用陌生的服务发现机制。
  • 存储编排:自动挂载所选存储系统,包括本地存储。
  • Secret和配置管理:部署更新Secrets和应用程序的配置时不必重新构建容器镜像,且不必将软件堆栈配置中的秘密信息暴露出来。
  • 批量执行:除了服务之外,Kubernetes还可以管理你的批处理和CI工作负载,在期望时替换掉失效的容器。
  • 水平扩缩:使用一个简单的命令、一个UI或基于CPU使用情况自动对应用程序进行扩缩。
  • 自动化上线和回滚:Kubernetes会分步骤地将针对应用或其配置的更改上线,同时监视应用程序运行状况以确保你不会同时终止所有实例。
  • 自动装箱:根据资源需求和其他约束自动放置容器,同时避免影响可用性。
  • 自我修复:重新启动失败的容器,在节点死亡时替换并重新调度容器,杀死不响应用户定义的健康检查的容器。

二、K8S集群安装

1.安装K8S集群

搭建K8S集群,准备三台4核8G的虚拟机,操作系统选择用centos 7以上版本,先在三台机器上装好docker。
在三台机器上都执行如下命令操作:

1、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2、关闭 selinux

sed ‐i 's/enforcing/disabled/' /etc/selinux/config # 永久关闭
setenforce 0 # 临时关闭

3、关闭 swap

swapoff ‐a # 临时关闭vim /etc/fstab # 永久关闭
#注释掉swap这行
# /dev/mapper/centos‐swap swap swap defaults 0 0
systemctl reboot #重启生效
free ‐m #查看下swap交换区是否都为0,如果都为0则swap关闭成功

4、给三台机器分别设置主机名

hostnamectl set‐hostname <hostname>

第一台:k8s‐master
第二台:k8s‐node1
第三台:k8s‐node2

5、在 k8s‐master机器添加hosts,执行如下命令,ip需要修改成你自己机器的ip

cat >> /etc/hosts << EOF
192.168.160.129 k8s‐master
192.168.160.130 k8s‐node1
192.168.160.131 k8s‐node2
EOF

6、将桥接的IPv4流量传递到iptables

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge‐nf‐call‐ip6tables = 1
net.bridge.bridge‐nf‐call‐iptables = 1
EOF
sysctl ‐‐system # 生效

7、设置时间同步

yum install ntpdate ‐y
ntpdate time.windows.com

8、添加k8s yum源

cat > /etc/yum.repos.d/kubernetes.repo << EOF[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes‐el7‐x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum‐key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm‐package‐key.gpg
EOF

9、如果之前安装过k8s,先卸载旧版本

yum remove ‐y kubelet kubeadm kubectl

10、查看可以安装的版本

yum list kubelet ‐‐showduplicates | sort ‐r

11、安装kubelet、kubeadm、kubectl 指定版本,我们使用kubeadm方式安装k8s集群

yum install ‐y kubelet‐1.18.0 kubeadm‐1.18.0 kubectl‐1.18.0

12、开机启动kubelet

systemctl enable kubelet
systemctl start kubelet

13、初始化操作

在k8s-master机器上执行初始化操作(里面的第一个ip地址就是k8s-master机器的ip,改成你自己机器的,后面两个ip网段不用动)

kubeadm init ‐‐apiserver‐advertise‐address=192.168.65.160 ‐‐image‐repository registry.aliyuncs.com/google_containers ‐‐kubernetes‐version v1.18.0 ‐‐service‐cidr=10.96.0.0/12 ‐‐pod‐network‐cidr=10.244.0.0/16

执行完后结果如下图:

在k8s-master机器上执行如下命令:

#配置使用 kubectl 命令工具(类似docker这个命令),执行上图第二个红框里的命令
mkdir ‐p $HOME/.kube
sudo cp ‐i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id ‐u):$(id ‐g) $HOME/.kube/config#查看kubectl是否能正常使用
kubectl get nodes#安装 Pod 网络插件
kubectl apply ‐f https://docs.projectcalico.org/manifests/calico.yaml
# 如果上面这个calico网络插件安装不成功可以试下下面这个
# kubectl apply ‐f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kubeflannel.yml

在所有k8s node机器执行上图第三个红框里的命令:

 # 将node节点加入进master节点的集群里,复制上图第三个红框里的命令执行kubeadm join 192.168.65.160:6443 ‐‐token hbovty.6x82bkdlsk6dfy32 \‐‐discovery‐token‐ca‐cert‐hash sha256:659511b431f276b2a5f47397677b1dff74838ae5eb18e24135e6dae1b8c45840

在k8s-master机器执行查看节点命令

kubectl get nodes


刚刚安装的三个k8s节点都已经准备就绪,大功告成!

2.用K8S部署Nginx

在k8s-master机器上执行

# 创建一次deployment部署
kubectl create deployment nginx ‐‐image=nginx
kubectl expose deployment nginx ‐‐port=80 ‐‐type=NodePort
# 查看Nginx的pod和service信息
kubectl get pod,svc ‐o wide

访问Nginx地址: http://任意节点的ip:图中Nginx的对外映射端口,http://192.168.65.160:30433

补充:如果node节点添加进集群失败,可以删除节点重新添加。
要删除 k8snode1这个节点,首先在 master 节点上依次执行以下两个命令:

kubectl drain k8s‐node1 ‐‐delete‐local‐data ‐‐force ‐‐ignore‐daemonsets
kubectl delete node k8s‐node1

执行后通过 kubectl get node 命令可以看到 k8snode1已被成功删除,接着在 k8snode1这个 Node 节点上执行如下命令,这样该节点即完全从 k8s 集群中脱离开来,之后就可以重新执行命令添加到集群。

kubeadm reset

三、总结

提示:以上就是今天要讲的内容,本文仅仅简单介绍了Kubernetes快速搭建,以及用K8S部署Nginx。

【Kubernetes快速实战】相关推荐

  1. Hello Kubernetes快速交互实验手册

    " K8S在线实验室提供了一个交互实验环境,现将这部分文章精简并翻译为中文,希望对那些不了解K8S的童鞋有帮助,能够快速玩起来有个感性认识..." 原文:https://kuber ...

  2. python standardscaler_Python快速实战机器学习之数据预处理

    前言 机器学习是如今人工智能时代背景下一个重要的领域,它应用广泛,如推荐系统,文本分析,图像识别,语言翻译等等.要想学通这个大的领域不是一件容易的事情,这个"Python快速实战机器学习&q ...

  3. dubbo快速实战(非最佳配置,演示用)

    一.目标: 由于培训需要演示dubbo的快速实战,因此有了本文,再次声明,本文不是最佳配置. 使用dubbo,构建一个provider提供视频信息服务,一个consumer获取视频信息服务并调用. 文 ...

  4. Kubernetes RBAC 实战应用

    Kubernetes RBAC 实战应用 文章目录 Kubernetes RBAC 实战应用 1. 介绍 2. Practice - Role and Rolebinding 3. Practice ...

  5. 零入门kubernetes网络实战-20->golang编程syscall操作tun设备介绍

    <零入门kubernetes网络实战>视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本篇文章主要是使用g ...

  6. kubernetes入门实战

    kubernetes入门实战 文章目录 kubernetes入门实战 一. Namespace 二. Pod 三. Label 四. Deployment 一. Namespace Namespace ...

  7. 零入门kubernetes网络实战-3->Underlay网络与Overlay网络总结

    <零入门kubernetes网络实战>视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章主要用于收集.整理.总结关于Underla ...

  8. 零入门kubernetes网络实战-7->Mac环境下为虚拟机磁盘空间进行扩容

    <零入门kubernetes网络实战>视频专栏地址 https://www.ixigua.com/7193641905282875942 在Mac环境下,使用PD软件创建的虚拟机磁盘空间不 ...

  9. 零入门kubernetes网络实战-31->基于bridge+veth pair+MASQUERADE技术实现内网可以访问外网

    <零入门kubernetes网络实战>视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本篇文章我们使用na ...

最新文章

  1. 安装计算机过程中的注意事项,西门子step7安装过程中的注意事项
  2. Java: 复制文件最快、高效率的方法
  3. Asp.Net 2.0中的客户端脚本
  4. Uncaught TypeError: Object #Document has no method 'load'
  5. es6中数组的解构_ES6中的数组解构简介
  6. Python+OpenGL使用鼠标选择模型不同组成部分
  7. 关于servlet中出现GET方法不能应用于此url的解决办法
  8. pytorch_pix2pix之argparse
  9. 跨实例查询 mysql_SQL语句怎么搞定跨实例查询?
  10. html5上传steam,Steam.html · savfile/shencore.github.io - Gitee.com
  11. CK-GW06-E01与恩基士PLC配置指南
  12. mac上彻底删除 搜狗输入法 鼠须管输入法
  13. BZOJ2038: [2009国家集训队]小Z的袜子(hose) 莫队算法 莫队算法讲解及时间复杂度证明
  14. Photoshop CC 2017 For Mac 安装与破解
  15. 报错:java.lang.NullPointerException 空指针异常
  16. 什么是java的类加载器_JAVA-大白话探索JVM-类加载器(一)
  17. 第三方移动支付类产品竞品分析:支付宝VS微信支付VS云闪付
  18. Unity检视面板重构(OnInspectorGUI重写)
  19. 雪花算法的基本理念和简单示例
  20. visionpro(用visionpro对相机进行标定)

热门文章

  1. 快跑,福雷斯特,快跑
  2. 小米微信无法连接到服务器1-10087,微信无法连接到服务器【搞定方向】
  3. 盒子装载图片时出现的盒子比图片实际偏高的问题
  4. ios 按钮文字下划线_iOS - UIButton设置文字标题下划线以及下划线颜色
  5. 纯css position:sticky 实现表格首行和首列固定
  6. 第六周:整数转罗马数字
  7. adobe dreamweaver cs5序列号
  8. 【论文 | 复现】YOLO-landmark detection
  9. c语言驱动显卡,佳能 Tesla C2050 驱动程序下载-更新佳能软件(显卡)
  10. 【CV学习笔记】图像预处理warpaffine