博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kubernetes 学习记录 一
阅读量:3924 次
发布时间:2019-05-23

本文共 3149 字,大约阅读时间需要 10 分钟。

本文参考 http://docs.kubernetes.org.cn/109.html 和 http://www.qfdmy.com/

简介

什么是Kubernees

Kubernees,简称k8s,ks是容器集群管理系统,是一个开源的平台,可以实现容器的自动化部署,自动扩缩容,维护等功能

特色

优势

快速部署应用
快速扩展应用
无缝对接新功能
节省资源,优化硬件资源的使用

特点

可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
可扩展: 模块化, 插件化, 可挂载, 可组合
自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

从传统到容器化部署

在这里插入图片描述

为什么要使用容器

传统应用部署和容器部署的区别

传统的应用部署

是通过插件或者脚本来安装应用,这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

通过部署容器方式实现

沙箱机制,每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移

容器化部署的优势

  1. 快速创建/部署应用: 与虚拟机相比,容器镜像的创建更加容易。
  2. 持续开发、集成和部署: 提供可靠且频繁的容器镜像构建/部署,并使用快速和简单的回滚(由于镜像不可变性)。
  3. 开发和运行相分离: 在 build 或者 release 阶段创建容器镜像,使得应用和基础设施解耦。
  4. 开发,测试和生产环境一致性: 在本地或外网(生产环境)运行的一致性。
  5. 云平台或其他操作系统: 可以在 Ubuntu、RHEL、CoreOS、on-prem、Google Container Engine
    或其它任何环境中运行。
  6. 分布式,弹性,微服务化: 应用程序分为更小的、独立的部件,可以动态部署和管理。
    资源隔离
  7. 资源利用更高效

使用k8s能够做什么

  • 多个进程(作为容器运行)协同工作。(Pod)
  • 存储系统挂载
  • Distributing secrets
  • 应用健康检测
  • 应用实例的复制
  • Pod自动伸缩/扩展
  • Naming and discovering
  • 负载均衡
  • 滚动更新
  • 资源监控
  • 日志访问
  • 调试应用程序
  • 提供认证和授权

这里要注意的是,k8s并部署传统的Paas系统,Kubernetes不限制支持应用的类型,不限制应用框架,不限制受支持的语言,满足1要素轻应用,不提供中间件,不部署源码不编译应用,不提供或授权一个全面的应用程序配置语言/系统,也不提供任何机器配置,维护,但是他允许用户选择自己的日志,监控,另外,Kubernetes不仅仅是一个“编排系统”;它消除了编排的需要。“编排”的定义是指执行一个预定的工作流:先执行A,之B,然C。相反,Kubernetes由一组独立的可组合控制进程组成。怎么样从A到C并不重要,达到目的就好。当然集中控制也是必不可少,方法更像排舞的过程。这使得系统更加易用、强大、弹性和可扩展。

使用乌班图部署 Kubernetes 集群

准备工作

关闭交互空间

swapoff -a

避免开机启动交换空间

# 注释 swap 开头的行    vi /etc/fstab

关闭防火墙

ufw disable

配置DNS

# 取消 DNS 行注释,并增加 DNS 配置如:114.114.114.114,修改后重启下计算机    vi /etc/systemd/resolved.conf

安装 Docker

前面有文章
在 /etc/docker/daemon.json 中写入如下内容(以下配置修改 cgroup 驱动为 systemd,满足 K8S 建议)

{      "exec-opts": ["native.cgroupdriver=systemd"],      "log-driver": "json-file",      "log-opts": {        "max-size": "100m"      },      "registry-mirrors": [        "https://k7da99jp.mirror.aliyuncs.com/",        "https://dockerhub.azk8s.cn",        "https://registry.docker-cn.com"      ],      "storage-driver": "overlay2"    }

安装 Kubernetes 必备工具

安装三个 Kubernetes 必备工具,分别为 kubeadm,kubelet,kubectl

加粗样式

# 安装系统工具    apt-get update && apt-get install -y apt-transport-https    # 安装 GPG 证书    curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -    # 写入软件源;注意:我们用系统代号为 bionic,但目前阿里云不支持,所以沿用 16.04 的 xenial    cat << EOF >/etc/apt/sources.list.d/kubernetes.list    deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main    EOF    # 安装    apt-get update && apt-get install -y kubelet kubeadm kubectl

同步时间

设置时区

dpkg-reconfigure tzdata

时间同步

# 安装 ntpdateapt-get install ntpdate# 设置系统时间与网络时间同步(cn.pool.ntp.org 位于中国的公共 NTP 服务器)ntpdate cn.pool.ntp.org# 将系统时间写入硬件时间hwclock --systohc

修改 cloud.cfg

主要作用是防止重启后主机名还原

vi /etc/cloud/cloud.cfg
# 该配置默认为 false,修改为 true 即可
preserve_hostname: true

单独节点配置

编辑 vi /etc/netplan/50-cloud-init.yaml 配置文件,修改内容如下

network:    ethernets:        ens33:          addresses: [192.168.23.132/24]          gateway4: 192.168.23.2          nameservers:            addresses: [192.168.23.2]    version: 2

配置主机名

# 修改主机名    hostnamectl set-hostname kubernetes-master    # 配置 hosts    cat >> /etc/hosts << EOF    192.168.23.132 kubernetes-master    EOF

最后ping一下百度

ping www.baidu.com ,看看dns也没有配置失败

转载地址:http://bnkgn.baihongyu.com/

你可能感兴趣的文章
从内存中释放Selenium chromedriver.exe
查看>>
如何在 C# 中使用 MSMQ
查看>>
小试elsa
查看>>
巧用 Lazy 解决.NET Core中的循环依赖关系
查看>>
微前端架构在容器平台的应用
查看>>
C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项
查看>>
仓储模式到底是不是反模式?
查看>>
【One by One系列】IdentityServer4(一)OAuth2.0与OpenID Connect 1.0
查看>>
为什么人和人的差距这么大?
查看>>
ML.NET 推荐引擎中一类矩阵因子分解的缺陷
查看>>
微软2020开源回顾:止不住的挨骂,停不下的贡献
查看>>
说说 RabbiMQ 的应答模式
查看>>
OpenTelemetry - 云原生下可观测性的新标准
查看>>
使用 ML.NET 实现峰值检测来排查异常
查看>>
通过 .NET NativeAOT 实现用户体验升级
查看>>
如何友好的处理 WebApi 中抛出的错误
查看>>
因MemoryCache闹了个笑话
查看>>
Dotnet的垃圾回收
查看>>
乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时
查看>>
gRPC在C#中的未来属于grpc-dotnet
查看>>