温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

kubernetes创建资源有哪些方式

发布时间:2020-06-10 15:23:42 来源:亿速云 阅读:188 作者:元一 栏目:云计算

Kubernetes概述

Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡

在Kubernetes中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员去进行复杂的手工配置和处理。

Kubernetes 特点

可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)

可扩展: 模块化,插件化,可挂载,可组合

自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展

Kubernetes 组件

1Master 组件

1.1kube-apiserver

1.2ETCD

1.3kube-controller-manager

1.4cloud-controller-manager

1.5kube-scheduler

1.6插件 addons

1.6.1DNS

1.6.2用户界面

1.6.3容器资源监测

1.6.4Cluster-level Logging

2节点(Node)组件

2.1kubelet

2.2kube-proxy

2.3docker

2.4RKT

2.5supervisord

2.6fluentd

创建资源的两种方式
1用命令行的方式创建:
了解*
•json格式

[root@master manifests]# pwd
/etc/kubernetes/manifests
[root@master manifests]# vim etcd.yaml

17行:

  • --data-dir=/var/lib/etcd

1.3台导入镜像:nginx.tar httpd.tar
docker load < httpd.tar && docker load < nginx.tar
全部更新镜像:
docker pull nginx
//创建pod控制器,deployment
[root@master ~]# kubectl run web --image=nginx --replicas=5
//查看控制器情况
[root@master ~]# kubectl get deployments.
kubernetes创建资源有哪些方式

[root@master ~]# kubectl get pod
kubernetes创建资源有哪些方式

//查看资源详细信息
[root@master ~]# kubectl describe deployments. web
//查看命名空间
[root@master ~]# kubectl get namespaces 简写: kubectl get ns
kubernetes创建资源有哪些方式

[root@master ~]# kubectl get pod --all-namespaces
Ps:查看某种资源对象,没有指定名称空间,默认是在defaule名称空间。可以加上-n选项,查看指定名称空间的资源。
例如:查看本地资源的名称空间:
[root@master ~]# kubectl get pod -n kube-system
//删除pod,但是还会有
[root@master ~]# kubectl delete pod  web-59765d756f-45zp6
//删除控制器,pod也没了
[root@master ~]# kubectl delete deployments. test-web
//查看详细信息:
[root@master ~]# kubectl get pod -o wide
[root@master ~]# kubectl describe pod web-59765d756f-bctvr
[root@master ~]# kubectl get rs
kubernetes创建资源有哪些方式

[root@master ~]# kubectl describe rs web-59765d756f
注意:直接运行创建的Deployment资源对象,时经常使用的一个控制器资源类型,除了deployment,还有rc,rs等pod控制器,Deployment是一个高级的pod控制器。
[root@master ~]# kubectl get pod -o wide
kubernetes创建资源有哪些方式

[root@master ~]# curl 10.244.2.4

创建service资源类型
[root@master ~]# kubectl get deployments.
kubernetes创建资源有哪些方式

[root@master ~]# kubectl expose deployment web --name=web-svc --port=80 --type=NodePort
kubernetes创建资源有哪些方式

//查看service资源类型
[root@master ~]# kubectl get svc
kubernetes创建资源有哪些方式

[root@master ~]# curl 127.0.0.1:31351
[root@master ~]# curl 10.102.189.154
kubernetes创建资源有哪些方式
kubernetes创建资源有哪些方式
kubernetes创建资源有哪些方式

PS:如果想要外网能够访问服务,可以暴露deployment资源,得到service资源,但svc资源的类型必须为NodePort。
映射端口:3000-32767
服务的扩容与缩容
kubernetes创建资源有哪些方式

[root@master ~]# kubectl scale deployment web --replicas=8
kubernetes创建资源有哪些方式

输出为json和yaml格式
[root@master ~]# kubectl get deployments. -o json

[root@master ~]# kubectl get deployments. -o yaml
导出:
[root@master ~]# kubectl get deployments. -o yaml > web.yaml
[root@master ~]# kubectl edit deployments. web
kubernetes创建资源有哪些方式

kubernetes创建资源有哪些方式

服务的升级与回滚:
//升级:
[root@master ~]# docker pull nginx:1.15

[root@master ~]# docker pull nginx:1.14
[root@master ~]# docker tag nginx:latest nginx:v1
[root@master ~]# kubectl set image deployment web web=nginx:1.15

kubernetes创建资源有哪些方式
[root@master ~]# kubectl get deployments. -o wide

[root@master ~]# kubectl get pod

[root@master ~]# kubectl get pod -o wide

[root@master ~]# kubectl get deployments. -o wide

[root@master ~]# kubectl describe pod web-ccc7c5cd6-7jlnx
[root@master ~]# kubectl edit deployments. web
kubernetes创建资源有哪些方式

//回滚:
[root@master ~]# kubectl rollout undo deployment web
kubernetes创建资源有哪些方式

实验:
sha作业:
1)基于httpd制作自己的镜像,需要3个版本,v1,v2,v3.并且对应的版本镜像,访问的主目录内容不一样,分别为v1:  
<h2>xxx | test-web | httpd | v1<h2>

[root@master ~]# mkdir {v1,v2,v3}
[root@master ~]# cd v1
[root@master v1]# echo "<h2>songkaixiong | test-web | httpd | v1<h2>" >> index.html
[root@master v1]# cat index.html
<h2>songkaixiong | test-web | httpd | v1<h2>
[root@master v1]# cat Dockerfile
FROM httpd:latest
COPY index.html /usr/local/apache2/htdocs/index.html
[root@master v1]# docker build -t 192.168.1.10:5000/httpd:v1 .

[root@master ~]# cd ../v2/
[root@master v2]# echo "<h2>songkaixiong | test-web | httpd | v2<h2>" >> index.html
[root@master v2]# cat index.html
<h2>songkaixiong | test-web | httpd | v2<h2>
[root@master v2]# cat Dockerfile
FROM httpd:latest
COPY index.html /usr/local/apache2/htdocs/index.html
[root@master v2]# docker build -t 192.168.1.10:5000/httpd:v2 .

[root@master v2]# cd ../v3
[root@master v3]# echo "<h2>songkaixiong | test-web | httpd | v3<h2>" >> index.html
[root@master v3]# cat index.html
<h2>songkaixiong | test-web | httpd | v3<h2>
[root@master v3]# cat Dockerfile
FROM httpd:latest
COPY index.html /usr/local/apache2/htdocs/index.html
[root@master v3]# docker build -t 192.168.1.10:5000/httpd:v3 .

2)在k8s集群内启用私有仓库registry或Harbor。

[root@master v3]# docker pull registry:2
[root@master v3]# docker run -itd --name registry --restart=always -p 5000:5000 registry:2
[root@master v3]# vim /usr/lib/systemd/system/docker.service
13行:
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.10:5000
[root@master v3]# systemctl daemon-reload
[root@master v3]# systemctl restart docker
[root@master v3]# scp /usr/lib/systemd/system/docker.service node02:/usr/lib/systemd/system
[root@master v3]# scp /usr/lib/systemd/system/docker.service node03:/usr/lib/systemd/system
[root@node02 ~]# systemctl daemon-reload
[root@node02 ~]# systemctl restart docker
[root@node03 ~]# systemctl daemon-reload
[root@node03 ~]# systemctl restart docker

[root@master v3]# docker push 192.168.1.10:5000/httpd:v1
[root@master v3]# docker push 192.168.1.10:5000/httpd:v2
[root@master v3]# docker push 192.168.1.10:5000/httpd:v3

3)部署一个Deployment资源对象,要求镜像使用上述私有镜像v1版本。6个副本Pod。

[root@master ~]# kubectl run httpdtest --image=192.168.1.10:5000/httpd:v1 --replicas=6
kubernetes创建资源有哪些方式
kubernetes创建资源有哪些方式
kubernetes创建资源有哪些方式
4)将上述Deployment暴露一个service资源对象,使外网能否访问服务。

[root@master ~]# kubectl expose deployment httpdtest --name=httpd-svc --port=80 --type=NodePort
kubernetes创建资源有哪些方式

5)将上述Deployment进行扩容和缩容操作,扩容为8个副本Pod,然后缩容为4个副本Pod。
[root@master ~]# kubectl scale deployment httpdtest --replicas=8
kubernetes创建资源有哪些方式
[root@master ~]# kubectl scale deployment httpdtest --replicas=4
kubernetes创建资源有哪些方式
6)将上述Deployment进行升级与回滚操作,将v1版本,升级到v2版本。
[root@master ~]# kubectl set image deployment httpdtest httpdtest=192.168.1.10:5000/httpd:v2
kubernetes创建资源有哪些方式
[root@master ~]# kubectl rollout undo deployment httpdtest
kubernetes创建资源有哪些方式

2配置清单:

apiVersion:api版本信息

kind:资源对象的类别

metadata:元数据。名称字段必写。

spec:用户期望的状态。

status:资源现在处于什么样的状态。

使用yaml文件的方式创建一个Deployment资源对象,要求镜像使用个人私有镜像v1版本。replicas为3个。
[root@master ~]# vim skx.yaml

kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: web
spec:
replicas: 3
template:
metadata:
labels:
app: web_server
spec:
containers:

  • name: httpd
    image: 192.168.1.10:5000/httpd:v1
    [root@master ~]# kubectl apply -f skx.yaml

使用yaml文件的方式创建一个Service资源对象,要与上述Deployment资源对象关联,type类型为: NodePort,端口为:30123.
[root@master ~]# vim skx-svc.yaml
kind: Service
apiVersion: v1
metadata:
name: skx-svc
spec:
type: NodePort
selector:
app: web_server
ports:

  • protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30123
    [root@master ~]# kubectl apply -f skx-svc.yaml

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI