ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kubernetes快速入门

2019-09-02 19:36:39  阅读:232  来源: 互联网

标签:load kubectl 入门 kubernetes minikube world docker 快速 hello


minikube

minikube是一个单节点的kubernetes集群,通过它我们能够快速搭建kubernetes学习环境。

安装minikube

curl -Lo minikube https://aliyun.hellozjf.com:7004/uploads/2019/9/2/minikube
chmod +x minikube
install minikube /usr/local/bin

安装minikube运行所需要的镜像

curl -Lo images.tar.gz https://aliyun.hellozjf.com:7004/uploads/2019/9/2/images.tar.gz
tar xvf images.tar.gz
cd images
docker load -i coredns
docker load -i echoserver
docker load -i etcd
docker load -i kube-addon-manager
docker load -i kube-apiserver
docker load -i kube-controller-manager
docker load -i kube-proxy 
docker load -i kubernetes-dashboard-amd64 
docker load -i kube-scheduler
docker load -i pause 
docker load -i storage-provisioner

启动minikube

minikube start --vm-driver=none

kubectl

kubectl是kubernetes终端工具,通过它可以操作kubernetes集群

安装kubectl

curl -Lo kubectl https://aliyun.hellozjf.com:7004/uploads/2019/9/2/kubectl
chmod +x kubectl
mv ./kubectl /usr/local/bin/kubectl

验证是否安装成功

kubectl version

显示下面内容就是正常的

Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.3", GitCommit:"2d3c76f9091b6bec110a5e63777c332469e0cba2", GitTreeState:"clean", BuildDate:"2019-08-19T11:13:54Z", GoVersion:"go1.12.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.2", GitCommit:"f6278300bebbb750328ac16ee6dd3aa7d3549568", GitTreeState:"clean", BuildDate:"2019-08-05T09:15:22Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}

实验前准备docker镜像(不用管)

server.js

var http = require('http');
var os = require('os');

var handleRequest = function(request, response) {
  console.log('Received request for URL: ' + request.url);
  response.writeHead(200);
  response.end('Hello World!\nhostname:' + os.hostname());
};
var www = http.createServer(handleRequest);
www.listen(8080);

Dockerfile

FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD node server.js

生成docker镜像

docker build -t hellozjf/hello-world:1.0.0 .

修改server.js,将Hello World改为Hello World2

再次生成docker镜像

docker build -t hellozjf/hello-world:2.0.0 .

上传镜像

docker push hellozjf/hello-world:1.0.0
docker push hellozjf/hello-world:2.0.0

k8s整体架构

[外链图片转存失败(img-qjDCPUp2-1567423811271)(https://d33wubrfki0l68.cloudfront.net/cc38b0f3c0fd94e66495e3a4198f2096cdecd3d5/ace10/docs/tutorials/kubernetes-basics/public/images/module_04_services.svg)]

术语解释

术语 解释
Node 一台安装了docker的机器
Pod 一个docker容器(其实也可以是容器的集合,不过我现在学的比较浅,先这样理解)
Deployment 一个部署规则,比方说指定A镜像要开三个实例,调度程序会根据这个规则创建容器
Service 公开的容器,它通常使用NodePort,即公开的服务使用宿主机的端口

部署应用

部署命令

kubectl create deployment hello-world --image=hellozjf/hello-world:1.0.0

查看部署

kubectl get deployments

结果为

NAME          READY   UP-TO-DATE   AVAILABLE   AGE
hello-world   1/1     1            1           5m17s

如何卡住了,可以通过kubectl get pods查看当前pod的状态

公开应用

创建命令

kubectl expose deployment hello-world --type=NodePort --port=8080

查看服务

kubectl get services

结果为

NAME          TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-world   LoadBalancer   10.103.247.11   <pending>     8080:32088/TCP   8s
kubernetes    ClusterIP      10.96.0.1       <none>        443/TCP          32s

访问32088端口

横向扩展应用

扩展命令

kubectl scale deployments/hello-world --replicas=3

查看结果

kubectl get deployment

结果为

NAME          READY   UP-TO-DATE   AVAILABLE   AGE
hello-world   3/3     3            3           3m56s

通过一下命令查看每个pod的情况

kubectl get pods

结果为

NAME                           READY   STATUS    RESTARTS   AGE
hello-world-5d5c98456d-766qk   1/1     Running   0          6m37s
hello-world-5d5c98456d-sqllk   1/1     Running   0          14s
hello-world-5d5c98456d-wnhcf   1/1     Running   0          14s

负载均衡在Node内部是正常的,但是别的机器访问却是不正常的(总是访问同一个Pod),原因不明,我的知识量还不够大,搞不定这个东西。

更新应用

更新命令

kubectl set image deployments/hello-world hello-world=hellozjf/hello-world:2.0.0

查看结果

kubectl get rs

可以看到之前1.0.0的三个横向扩展的应用已经下线,2.0.0的三个横向扩展应用上线了

NAME                     DESIRED   CURRENT   READY   AGE
hello-world-5d5c98456d   0         0         0       104m
hello-world-7969497f97   3         3         3       2m14s

回滚应用

kubectl rollout undo deployments/hello-world

查看结果

kubectl get rs

可以看到之前1.0.0的三个横向扩展应用恢复了,2.0.0的三个横向扩展应用下线了

NAME                     DESIRED   CURRENT   READY   AGE
hello-world-5d5c98456d   3         3         3       106m
hello-world-7969497f97   0         0         0       4m32s

标签:load,kubectl,入门,kubernetes,minikube,world,docker,快速,hello
来源: https://blog.csdn.net/nbda1121440/article/details/100359282

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有