[K8S] 02 - Init k8s Cluster

本篇章主要是实战。 

  

Kubernetes Pod 概念


Pod 解析

可能封装多个容器。

同一个Pod内部,既共享网络,也共享存储

 

  确实这里讲的不好,换一个教程再开始。

  Pod 讲解在 [K8S] 03 - k8s YAML, NameSpace & Pod

  

 

 

极速入门教程


Ref: 2020年最新 黑马程序员 - Kubernetes(K8S)超快速入门教程(完整资料)

2015年7月 release v1.0。

2017年 docker宣布原生支持k8s。

  

集群部署

部署前的自我提问。

 

  

Hardware

硬件要求,并创建三台虚拟机 CentOS 7:master + 2*slaves

 

 

System

部署方式有两种:

- 二进制源码包部署。

- 使用kubeadm部署。(或者 minKube)

 

  以下部分,最好 follow video step by step。

 

  • VMware + CentOS

安装虚拟机:12 kubernetes极速入门 k8s集群部署 主机准备 主机名设置

配置好网络:13 kubernetes极速入门 k8s集群部署 主机准备 IP设置及主机名解释

 

多操作模式的 Remote Terminal, 名字:MobaXterm Professional

sed 命令 可用于 替换文件的某段字符串。

 

  • 安全配置

-- 主机安全配置

-- selinux配置

  

  • 网桥过滤的模块

添加网桥过滤以及地址转发。

Ref: 17 kubernetes极速入门 k8s集群部署 主机准备 配置主机网桥过滤功能

/etc/sysctl.d/k8s.conf

$ modprobe br_netfilter
$ lsmod | grep br_netfilter

 

  • 配置 IPVS

IPVS基本上是一种高效的Layer-4交换机,它提供负载平衡的功能。

安装 ipset, ipvsadm。

 

 

Software

Ref: 19 kubernetes极速入门 k8s集群部署 docker安装

k8s的最小管理单元是Pod, 不是docker。

 

  • 软件安装

安装 Docker-ce等。

安装 kubelet, kubeadm, kubectl, docker-ce

Ref: 20 kubernetes极速入门 k8s集群部署 集群软件安装及配置

复习三者的关系,如下图。

 

添加yum源,具体安装过程,见原视频step by step。

 /etc/yum.repos.d/k8s.repo

 

  • 集群镜像准备

Ref: 21 kubernetes极速入门 k8s集群部署 集群镜像准备(感觉这里开始是重点)

kubeadm部署集群,是以Pod 为单位。分配镜像时,不同角色主机 准备 不同镜像,如下所示。

[Master主机镜像]

下载这些镜像。

以上是将要下载的images。写成下面脚本的形式,统一执行。

$ kubeadm config images list >> image.list

下载后,检查主机上有哪些镜像。

 

[Worker主机镜像]

只需要两个镜像。可以从master中拷贝即可,不用再下载浪费时间。

k8s.gcr.io/kube-proxy:v1.17.2
k8s.gcr.io/pause:3.1
    • Dump

 

    • Load
docker load -i kube-p.tar
docker load -i p.tar 

 

 到此为止,硬件、系统、软件准备完毕。

 

 

集群初始化

Ref: 22 kubernetes极速入门 k8s集群部署 集群初始化

  • 初始化命令

$ kubeadm init 
--kubernetes-version=v1.17.2
--pod-network-cidr=172.16.0.0/16
--apiserver-advertise-address=192.168.216.100 # 当前主机的ip

 

k8s涉及到三层网络:

    • 节点网络管理员配 置的
    • 集群网络网络插件 配置
    • Pod 网络网络插件 配置

 

执行后,Log 中会提示 “命令”。

    • 相关证书生成。
    • k8s配置:admin.conf, kubelet.conf, etc。
    • control-plane初始化完成,开始复制一段 log,从下面开始 直到 the end of log,保存在文件:kubernetes.txt

 

  Your Kubernetes control-plane has initialized successfully! 

  记得保存下来这个init log,方便之后查询。

 

  • Worker节点

目标:先配置,再加入到集群中。

6:13 / 19:52 开始讲解。

 

Step 1, admin.conf

Step 2, 部署一个pod网络

拷贝./calico-39到三台机器。通过 docker load -i <.tar> 加载下面文件 in all nodes.

calico-cni.tar
calico.yml
pod2daemon-flexvol.tar
calico-node.tar
kube-controllers.tar

然后在master中修改 calico.yml。因为其中本身有点小问题。

已准备好 calico.yml,然后执行命令,创建了资源对象。

kubectl apply -f calico.yml

  

Step 3, 可以添加任意数量的work节点到集群中。

拷贝log中的 kubeadm join命令,并在work node中执行。

在master节点中,执行如下, double check the work nodes.

$ kubectl get nodes

 

 

验证集群可用性

部署后,需要一个验证过程,确定其处于“可用状态”。

$ kubectl get nodes
$ kubectl get cs
$ kubectl cluster-info
$ kubectl get pods --namespace kube-system # 查看所有pod的状态

 

 

关闭集群

Ref: 如何删除Kubernetes部署

删除单个部署

Kubernetes部署运行您的应用程序的多个副本,并自动替换任何失败或无响应的实例。
在练习Kubernetes时,通常需要删除Kubernetes部署。
借助kubectl delete Deployments命令,删除部署非常容易:

root@kmaster-rj:~# kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
my-dep 2/2 2 2 4m22s

# 获得部署名称后,只需像这样使用它:
kubectl delete deployments my-dep

# 它应该显示一个输出,告诉您已删除部署:
root@kmaster-rj:~/pod-create# kubectl delete deployments my-dep
deployment.apps "my-dep" deleted

# 您可以通过检查可用的部署来验证它:
root@kmaster-rj:~/pod-create# kubectl get deployments
No resources found in default namespace.

您也可以使用deploy或部署(带有s)来代替kubectl delete deployment命令中的部署。全部都是一样。

删除多个部署

# 您可以像这样删除多个Kubernetes部署:
root@kmaster-rj:~/pod-create# kubectl delete deployment my-dep my-dep-2


# 或者使用其YAML配置文件删除Kubernetes部署
# 我正在使用Deployment-definition.yml文件创建新的部署:
root@kmaster-rj:~/pod-create# kubectl apply -f deployment-definition.yml
deployment.apps/my-dep created


# 您可以立即看到“部署”:
root@kmaster-rj:~/pod-create# kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
my-dep 2/2 2 2 49s


# 现在,如果您引用相同的YAML文件以进行删除,则它将删除与该文件关联的资源(此处为部署)。
root@kmaster-rj:~/pod-create# kubectl delete -f deployment-definition.yml
deployment.apps "my-dep" deleted


# 您可以通过列出所有部署来验证它:
root@kmaster-rj:~/pod-create# kubectl get deployments
No resources found in default namespace.

 

 

In a nutshell

 

End.

posted @ 2021-11-21 13:41  郝壹贰叁  阅读(97)  评论(0编辑  收藏  举报