在基于华为云上部署K8S集群环境 以及k8s的每个工具的实操 看完包你学会K8s!!! 虚拟私有云VPC 点击访问控制台 配置虚拟私有云 区域切换为北京四 名称VPC-k8s,其他参数默认 返回虚拟私有云列表,查看已经创建的VPC 在服务列表中选择云容器 选择CCE集群 计费模式:按需付费 区域: 华为-北京四 集群名称:k8s-demo 版本:v1.15.1 集群管理规模: 50节点 控制节点数: 3(高可用) 虚拟私有云 vpc-k8s 所在子网:选择VPC-K8S 一同创建子网 网络模型: 容器隧道网络 容器网段:自动选择 服务网段:默认 鉴权方式:RBAC 其他:保持默认 私有云选择刚刚创建的K8S 选择同一子网 模型vpc 创建节点 现在添加—按需计费---华北-北京四 可用区1 虚拟机节点 名称VPC-demo-node 通用s6.large.2/2核4GB 弹性ip 自动创建 规格全动态BGP 计费模式:按流量计费 带宽类型 独享 系统插件必装 查看产品详情 创建成功 看K8S工作状态变为正常 使用命令行工具kubectl 获取Kuberctl 证书 获取Kuberctl 证书 下载版本对应的kuberctl 查看下载的配置文件 购买弹性云服务器ECS 计费模式按需计费 区域北京四 可用区 随机分配 CPU架构 x86架构 规格选择 通用计算机 s6.small.1 镜像Centos7.5 系统盘高IO 40GB 查看创建的公网ip 查看公网ip 添加22号端口规则 打开CRT自带的传送文件FXP服务 输入密码 将 kubectl 和 kubectl 配置文件(在刚才下载两个文件存放的目录里)上传至 ecs-k8s 的 /home 目录。(选中左边的文件直接拖到左边目录 home 下即可)。 显示已经上传上去了 在CRT中执行以下命令 惊醒kubeconfig.json相关配置 进入Home目录 [root@ecs-65b2 ~]# cd /home 查看所有文件及权限 [root@ecs-65b2 home]# ls -l 赋予权限 [root@ecs-65b2 home]# chmod +x kubectl 移动文件到bin目录下 [root@ecs-65b2 home]# mv -f kubectl /usr/local/bin/ 创建目录 移动文件到config下 [root@ecs-65b2 home]# mv -f kubeconfig.json $HOME/.kube/config 查看集群信息 [root@ecs-65b2 home]# kubectl cluster-info 查看节点信息 [root@ecs-65b2 ~]# kubectl get nodes Kubernetes核心服务实践 我们将下载的附件上传到服务器目录/home目录下 可以看到已经上传到了目录 可以看到已经上传到了目录 Cat 查看一下yml 通过命令创建POD Kubectl apply -f POD-1container.yml 创建成功 查看状态 [root@ecs-65b2 home]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx 0/1 ContainerCreating 0 32s [root@ecs-65b2 home]# 通过命令查看pod运行在哪台弹性云服务器 [root@ecs-65b2 home]# kubectl get pod -o wide 使用ssh命令登录节点 [root@ecs-65b2 home]# ssh 192.168.0.96 登录成功 查看此节点上与刚刚创建的POD相关容器实例的信息 Docker container ls | grep nginx 注意:通过观察可以发现容器名称带有 nginx 的有两个,一个使用的镜像名称为 nginx,另 外一个容器使用的镜像名称为 cce-pause:3.1。 退出node节点 删除pod 确认删除成功 指定Pod运行到指定到node上 Kubectl get node 查看节点 通过以下命令给第一个节点打上 node=test 的标签。 [root@ecs-65b2 home]# kubectl label nodes 192.168.0.33 node=test (换成自己的node节点的ip地址 通过以下命令查看节点标签信息 通过以下命令查看集群中带有 node=test 标签的节点信息。 [root@ecs-65b2 home]# kubectl get node -l "node=test" 通过 FXP OD-NodeSel ctor.yml 文件至客户端服务器/Home 目录。 上传 输入命令ls 查看已上传的文件 创建POD 查看并确认POD是否为指定节点 [root@ecs-65b2 home]# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx 0/1 ContainerCreating 0 38s 192.168.0.33 [root@ecs-65b2 home]# 创建POD2 容器 查看上传的文件 通过命令上传Pod 通过命令查看POD运行在那个node上 [root@ecs-65b2 home]# kubectl get pod -o wide Ssh登录 通过命令查看ssh相关容器 [root@vpc-demo-node-mh0i9 ~]# docker container ls | grep two-container [root@vpc-demo-node-mh0i9 ~]# exit (退出) 查看节点信息 Kubectl get pod 删除pod [root@ecs-65b2 home]# kubectl delete pod nginx 删除 查看已经没有了 Doployment实践 上传deplyment 上传至看k8s 创建depolyment [root@ecs-65b2 home]# kubectl apply -f deployment.yml 查看状态 手动删除上述看到的pod [root@ecs-65b2 home]# kubectl delete pod nginx-deployment-84b8bdb667-cm8nz 查看POD 通过以下命令扩展 Deployment 数量至 4 并查看。 [root@ecs-65b2 home]# kubectl get pod 删除deployment 并查看 Kubectl get deployment [root@ecs-65b2 home]# kubectl get deployment No resources found in default namespace. [root@ecs-65b2 home]# Statefulset实践 将statefulset定义文件statefulset 上传之k8s Ls 查看 创建的statefulset [root@ecs-65b2 home]# kubectl apply -f statefulset.yml statefulset.apps/web created [root@ecs-65b2 home]# 查看创建的statefulset 运行状态 [root@ecs-65b2 home]# kubectl get pod 通过以下命令查看 web-0 的 POD 的名称、P 地址和所在的节点信息 kubectl describe pod web-0 查看ip地址 Kubectl delete pod web-0 查看pod 发生变化 Daemonet实践 上传 通过以下命令查看kube-system命令空间中的 kubectl get ds -n kube-system 通过命令创建daemonset 创建成功 [root@ecs-65b2 home]# kubectl apply -f daemonset.yml daemonset.apps/fluentd-elasticsearch created [root@ecs-65b2 home]# 再次查看kube-system中的DAEMONSET 不购买节点了 没钱了 Job实践 将job.yml上传时ecs-k8s 通过以下命令运行Job [root@ecs-65b2 home]# kubectl apply -f Job.yml 查看job运行状态 查看所有节点 可以发现Pi节点正在创建中 创建成功 查看job输出 Service实践通过之前上传的 deployment 文件创建 Deployment 创建 [root@ecs-65b2 home]# kubectl apply -f deployment.yml deployment.apps/nginx-deployment created [root@ecs-65b2 home]# 查看状态 查看pod状态 kubectl expose deployment nginx-deployment –-type=NodePort 查看service 通过curl命令验证网站是否可以访问 Kuberctl get node [root@ecs-65b2 home]# curl 192.168.0.96:32270 找一个节点的公网地址 打开地址栏输入ip:端口 NameSpace实践 通过命令查看系统默认的NameSpace Kubectl get namespace 通过以下命令可以手动创建一个NameSpace命名空间并查看 [root@ecs-65b2 home]# kubectl create namespace test 创建一个POD并指定此POD运行在test命名空间 [root@ecs-65b2 home]# kubectl apply -f POD-1Container.yml --namespace=test 查看指定命名空间里的pod Kubectl get pod -n test 创建一个限制Cpu和内存大小的 namespace [root@ecs-65b2 home]# kubectl create namespace quota-mem-cpu-example [root@ecs-65b2 home]# kubectl get ns 用namespace定以文件ns-cpu-mem.yml 到k8s‘ 通过以下命令查看文件信息 创建 ResourceQuota 并和 NameSpace 进行关联 [root@ecs-65b2 home]# kubectl create -f ns-cpu-mem.yml --namespace=quota-mem-cpu-example 查看ResourceQuota详细信息 [root@ecs-65b2 home]# kubectl get resourcequota mem-cpu-demo --namespace=quota-mem-cpu-example --output=yaml 添加限制 以上刚创建的ResourceQuota对象在quota-mem-cpu-example 名字空间中添加以下限 制: 每个容器必须设置内存请求(memory request),内存限额(memory limit),cpu 请求 (cpu request)和 cpu 限额(cpu limit)。 l 所有容器的内存请求总额不得超过 1 GiB。 l 所有容器的内存限额总额不得超过 2 GiB。 l 所有容器 的 CPU 请求总额不得超过 1 CPU。 l 所有容器的 CPU 限额总额不得超过 2 CPU 将 POD 定义文件上传至 ecs-k8s。 将quota上传到服务器 查看POD定义文件 [root@ecs-65b2 home]# kubectl create -f quota-mem-cpu-pod.yml --namespace=quota-mem-cpu-example pod/quota-mem-cpu-demo created [root@ecs-65b2 home]# 运行以下命令确认 POD 已运行。 用FXP上传 创建第二个POD 以下命令输出显示第二个 Pod 并没有创建成功。错误信息说明了如果创建第二个 Pod,内存 请求总额将超出名字空间的内存请求配额。 CCE 搭建flappybird 返回云容器引擎控制台,点击"创建无状态工作负载 具体配置如下 点击下一步,添加容器,点击"第三方镜像",选择镜像相关参数 镜像名称:swr.cn-north-1.myhuaweicloud.com/hc_cce/flappybird:latest 添加服务,如下参数配置后点击确定。 访问类型:负载均衡,服务名称:flappybird;集群级别 端口配置,容器端口:80;访问端口:80 其他参数默认 第三步查看创建的节点 访问