Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理
K8S 的资源有 Pod、Service、Volume、Namespace、ReplicaSet、Deployment、StatefulSet、DaemonSet、Job等等
What
,即应用最终要达到的状态。主机 | IP地址 |
---|---|
master | 192.168.1.21 |
node01 | 192.168.1.22 |
node02 | 192.168.1.23 |
[root@master ~]# cd /etc/kubernetes/manifests/
//k8s的yml、yaml文件
docker pull nginx
//下载nginx镜像
[root@master ~]# kubectl run test-web --image=nginx --replicas=5
//创建Pod控制器,deployment
[root@master ~]# kubectl get deployments.
//查看控制器情况
[root@master ~]# kubectl get pod --all-namespaces -o wide
//显示pod的节点信息
[root@master ~]# kubectl get namespaces
//查看k8s名称空间
[root@master ~]# kubectl describe deployments. test-web
//查看资源详细信息
查看某种资源对象,没有指定名称空间,默认是在default名称空间。可以加上-n选项,查看指定名称空间的资源。
[root@master ~]# kubectl get pod -n kube-system
[root@master ~]# kubectl delete deployments. test-web
[root@master ~]# kubectl run web --image=nginx --replicas=5
[root@master ~]# kubectl get pod -o wide
//查看一下pod的节点信息
[root@master ~]# kubectl describe deployments. web
//查看资源详细信息
注意:直接运行创建的deployment资源对象,是经常使用的一个控制器资源类型,除了deployment,还有rc、rs等等pod控制器,deployment是一个高级的pod控制器。
[root@master ~]# curl 10.244.1.7
[root@master ~]# kubectl expose deployment web --name=web-xgp --port=80 --type=NodePort
//创建service资源类型,这里我们设置了映射端口
如果想要外网能够访问服务,可以暴露deployment资源,得到service资源,但svc资源的类型必须为NodePort。
映射端口范围:30000-32767
[root@master ~]# kubectl get svc
[root@master ~]# kubectl get deployments. -o wide
[root@master ~]# kubectl scale deployment web --replicas=8
[root@master ~]# kubectl get deployments. -o wide
[root@master ~]# kubectl scale deployment web --replicas=4
[root@master ~]# kubectl get deployments. -o wide
[root@master ~]# kubectl get deployments. -o yaml > web.yaml
[root@master ~]# kubectl edit deployments. web
[root@master ~]# kubectl get deployments. -o wide
[root@master ~]# docker pull nginx:1.15
[root@master ~]# kubectl set image deployment web web=nginx:1.15
[root@master ~]# kubectl edit deployments. web
[root@master ~]# kubectl get deployments. -o wide
[root@master ~]# kubectl rollout undo deployment web
注意:只能回滚到上一次操作的状态
主机 | IP地址 | 服务 |
---|---|---|
master | 192.168.1.21 | registry+Deployment |
node01 | 192.168.1.22 | |
node02 | 192.168.1.23 |
[root@master ~]# docker pull httpd
[root@master xgp]# vim Dockerfile
FROM httpd
COPY index.html /usr/local/apache2/htdocs/index.html
[root@master xgp]#echo "<h2>xgp | test-web | httpd:v1<h2>" > index.html
[root@master xgp]# docker build -t web1 .
[root@master xgp]#echo "<h2>xgp | test-web | httpd:v1<h2>" > index.html
[root@master xgp]# docker build -t web2 .
[root@master xgp]# echo "<h2>xgp | test-web | httpd:v3<h2>" > index.html
[root@master xgp]# docker build -t web3 .
[root@master ~]# docker pull registry
[root@master xgp]# docker run -itd --name registry -p 5000:5000 --restart=always registry:latest
[root@master xgp]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.21:5000
[root@master xgp]# systemctl daemon-reload
[root@master xgp]# systemctl restart docker
[root@master xgp]# docker tag web1:latest 192.168.1.21:5000/web1:latest
[root@master xgp]# docker tag web2:latest 192.168.1.21:5000/web2:latest
[root@master xgp]# docker tag web3:latest 192.168.1.21:5000/web3:latest
[root@master xgp]# docker push 192.168.1.21:5000/web1:latest
[root@master xgp]# docker push 192.168.1.21:5000/web2:latest
[root@master xgp]# docker push 192.168.1.21:5000/web3:latest
[root@master xgp]# kubectl run www1 --image=192.168.1.21:5000/web1:latest --replicas=6
[root@master xgp]# kubectl get pod
[root@master xgp]# kubectl expose deployment www1 --name=web-xgp --port=80 --type=NodePort
[root@master xgp]# kubectl get svc
[root@master xgp]# kubectl scale deployment www1 --replicas=8
[root@master xgp]# kubectl get deployments. -o wide
[root@master ~]# kubectl get deployments. -o yaml > www1.yaml
[root@master ~]# kubectl edit deployments. www1
[root@master xgp]# kubectl get deployments. -o wide
[root@master ~]# kubectl set image deployment www1 www1=192.168.1.21:5000/web2
[root@master ~]# curl 127.0.0.1:30996
<h2>xgp | test-web | httpd:v2<h2>
[root@master ~]# kubectl edit deployments. www1
[root@master ~]# kubectl get deployments. -o wide
[root@master ~]# kubectl rollout undo deployment www1
注意:只能回滚到上一次操作的状态
____完毕____
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。