云安全 之 Kubernetes (K8S) 如何部署

文章来源 | MS08067 安全实验室

本文作者:Taoing(Web安全攻防讲师)

Kubernetes (K8S) 是什么

它是一个为容器化应用提供集群部署和管理的开源工具,由 Google 开发。Kubernetes这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为k和s之间有八个字符的关系。Google在2014年开源了Kubernetes项目。

主要特性:

  • 高可用,不宕机,自动灾难恢复

  • 灰度更新,不影响业务正常运转

  • 一键回滚到历史版本

  • 方便的伸缩扩展(应用伸缩,机器加减)、提供负载均衡

  • 有一个完善的生态

学习课程前提:

  • 熟悉Docker的基本使用,如果还不了解Docker,先看视频Docker快速上手

  • 熟悉Linux操作系统

不同的应用部署方案1f9f2ff4167bf4f93970b39b08f75eb5.png

传统部署方式

用直接在物理机上部署,机器资源分配不好控制,出现Bug时,可能机器的大部分资源被某个应用占用,导致其他应用无法正常运行,无法做到应用隔离。

虚拟机部署

在单个物理机上运行多个虚拟机,每个虚拟机都是完整独立的系统,性能损耗大。

容器部署

所有容器共享主机的系统,轻量级的虚拟机,性能损耗小,资源隔离,CPU和内存可按需分配

什么时候需要 Kubernetes

当你的应用只是跑在一台机器,直接一个docker + docker-compose就够了,方便轻松;当你的应用需要跑在 3,4 台机器上,你依旧可以每台机器单独配置运行环境 + 负载均衡器;当你应用访问数不断增加,机器逐渐增加到十几台、上百台、上千台时,每次加机器、软件更新、版本回滚,都会变得非常麻烦、痛不欲生,再也不能好好的摸鱼了,人生浪费在那些没技术含量的重复性工作上。

这时候,Kubernetes就可以一展身手了,让你轻松管理百万千万台机器的集群。“谈笑间,樯橹灰飞烟灭”,享受着一手掌控所有,年薪百万指日可待。

Kubernates可以为你提供集中式的管理集群机器和应用,加机器、版本升级、版本回滚,那都是一个命令就搞定的事,不停机的灰度更新,确保高可用、高性能、高扩展。

1. K8S(Kubernetes)服务器准备

准备 云服务器,新建三台服务器

这里我使用 阿里云,ECS按量付费机器进行搭建环境学习。https://www.aliyun.com/product/ecs

6b94872ed2559e6ab874a055a0080e5a.png

434a691d5dd58485656ddf81a9c1c2df.png

命名服务器

master:172.24.166.11

node1:172.24.166.10

node2:172.24.166.9

a95cb179324847d8a98acf5adbc3a295.png

2. 环境安装

设置主机

master:172.24.166.11

hostnamectl set-hostname master //主机名设置为 master

node1:172.24.166.10

hostnamectl set-hostname node1 //主机名设置为 node1

node2:172.24.166.9

hostnamectl set-hostname node2 //主机名设置为 node2

618db28291ce8e10403fafc62589bab7.png

f3a02f78e89cb64a15f877d1858bcaf3.png

69d29d17b8a6437c7174cd538b644bb1.png

修改hosts文件

vim /etc/hosts

172.24.166.11 master

172.24.166.10 node1

172.24.166.9  node2

ping测试:master机器: ping node1

92b4dc8494f72976231c54011f5cbcd3.png

所有节点关闭SELinux和防火墙

setenforce 0

sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

systemctl stop firewalld

systemctl disable firewalld

81b3195ef87a0b97e1b8f35852110f54.png

所有节点添加安装源

# 添加 k8s 安装源

cat <kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

repo_gpgcheck=0

EOF

mv kubernetes.repo /etc/yum.repos.d/

# 添加 Docker 安装源

yum -y install yum-utils

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5cfda592d804d5b81ebc9cbe37224de4.png

安装所需组件(所有节点)

yum install -y kubelet kubeadm kubectl docker-ce

267cf61ae1cfd90362877447e8055371.png

启动 kubelet、docker,并设置开机启动(所有节点)

systemctl enable kubelet

systemctl start kubelet

systemctl enable docker

systemctl start docker

be57e9ccc0340ba36b92656901255ea1.png

修改 docker 配置(所有节点)

# kubernetes 官方推荐 docker 等使用 systemd 作为 cgroupdriver,否则 kubelet 启动不了

cat <daemon.json

{

  "exec-opts": ["native.cgroupdriver=systemd"],

  "registry-mirrors": ["https://ud6340vz.mirror.aliyuncs.com"]

}

EOF

mv daemon.json /etc/docker/

# 重启生效

systemctl daemon-reload

systemctl restart docker

f567648a9643c2570d84a96b5a7f60da.png

在主节点使用 kubeadm 初始化集群(仅在主节点跑)

# 初始化集群控制台 Control plane

# 失败了可以用 kubeadm reset 重置

kubeadm init --image-repository=registry.aliyuncs.com/google_containers

# 记得把 kubeadm join xxx 保存起来

# 忘记了重新获取:kubeadm token create --print-join-command

# 复制授权文件,以便 kubectl 可以有权限访问集群

# 如果你其他节点需要访问集群,需要从主节点复制这个文件过去其他节点

mkdir -p $HOME/.kube

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

# 在其他机器上创建 ~/.kube/config 文件也能通过 kubectl 访问到集群

如下图所示,已经初始化完成,并输出了命令用于吧node节点加入到master。加入时记得把"\"去掉

706fa10e15667db62d10d267a16c6462.png
31088d4dee766498a112de7389a83874.png

f9a1e7ae9bf6570b5625df04bda302d4.png

在master上使用kubectl get node查看是否加入成功,如下图表示成功。但是发现状态(STATUS)为 没准备好(NotReady)。这时需要去安装网络插件,否则 node 是 NotReady 状态(主节点跑)

13267f74f94103b4ddc7c1a515d0fa60.png

在master上安装网络插件,否则 node 是 NotReady 状态(主节点跑)安装后稍等会状态(STATUS)会变为Ready(准备好)

# 很有可能国内网络访问不到这个资源,你可以网上找找国内的源安装 flannel

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

5499c9a5e43ced216a72ed6a791e62e3.png

到此为止已经部署好K8S

参考链接🔗

https://k8s.easydoc.net/docs/dRiQjyTY/28366845/6GiNOzyZ/9EX8Cp45

https://mp.weixin.qq.com/s/bhSLSrIpyYqB9I6T55GBew

https://www.bilibili.com/video/BV1Tg411P7EB?p=2

—  实验室旗下直播培训课程  —

4f7fcac24e14602d9a610d15606fbf3c.jpeg

ad126d4e269c5c6882ee845911f379cd.jpegc369dcf56ee2df729eb0d937c264edb6.png

68d73fddb3eb8c4e668bbf743cecce16.jpeg

ea451cbb17b51c4c2e2b17ceda689a13.jpeg

e579c690eccd5c3503720761f842fe22.jpeg

15f64343128a24d35d9d06ef827aa338.jpeg

4e1a53dfcb49585603eb1efa20085663.jpeg


来和20000+位同学加入MS08067一起学习吧!

717693c6b752b26f19dc3c5c562c241a.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值