k8s认识及简单部署使用

1、认识k8s(kubernets)

k8s可以说是云服务的“操作系统”,高效部署管理云服务;
k8s是轮船、舵手、船长,docker是上面的集装箱货物;

Kubernetes是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务。通过Kubernetes能够进行应用的自动化部署和扩缩容。在Kubernetes中,会将组成应用的容器组合成一个逻辑单元以更易管理和发现。Kubernetes积累了作为Google生产环境运行工作负载15年的经验,并吸收了来自于社区的最佳想法和实践。Kubernetes经过这几年的快速发展,形成了一个大的生态环境,Google在2014年将Kubernetes作为开源项目。Kubernetes的关键特性包括:

自动化装箱:在不牺牲可用性的条件下,基于容器对资源的要求和约束自动部署容器。同时,为了提高利用率和节省更多资源,将关键和最佳工作量结合在一起。
自愈能力:当容器失败时,会对容器进行重启;当所部署的Node节点有问题时,会对容器进行重新部署和重新调度;当容器未通过监控检查时,会关闭此容器;直到容器正常运行时,才会对外提供服务。
水平扩容:通过简单的命令、用户界面或基于CPU的使用情况,能够对应用进行扩容和缩容。
服务发现和负载均衡:开发者不需要使用额外的服务发现机制,就能够基于Kubernetes进行服务发现和负载均衡。
自动发布和回滚:Kubernetes能够程序化的发布应用和相关的配置。如果发布有问题,Kubernetes将能够回归发生的变更。
保密和配置管理:在不需要重新构建镜像的情况下,可以部署和更新保密和应用配置。
存储编排:自动挂接存储系统,这些存储系统可以来自于本地、公共云提供商(例如:GCP和AWS)、网络存储(例如:NFS、iSCSI、Gluster、Ceph、Cinder和Floker等)。

在这里插入图片描述

k8s主要认识两部分:pod、service

pod是一组容器的集合,代表了Kubemetes中的基本构建模块。 在实际应用中我们并不会单独部署容器,更多的是针对一组pod的容器进行部署和操作。

Service是 一 种为一组功能相同的 pod 提供单一不变的接入点的资源。当服务存在时,它的 IP 地址和端口不会改变。 客户端通过 IP 地址和端口号建立连接, 这些连接会被路由到提供该服务的任意一个 pod 上。 通过这种方式, 客户端不需要知道每个单独的提供服务的 pod 的地址, 这样这些pod就可以在集群中随时被创建或移除。

在这里插入图片描述
容器化隔离机制:


Linux命名空间,限制了系统视图
Linux控制组 cgroups,限制可用资源

2、简单部署使用

使用kind简单搭建k8s集群环境,参考:https://blog.csdn.net/weixin_42357472/article/details/117788974

k8s应用部署参考:
https://bbs.csdn.net/topics/396306247
https://blog.51cto.com/u_3241766/2420421

1、创建pod
mkdir k8s
cd k8s
vi app.yaml

app.yaml (缩进要注意)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: web
  replicas: 1
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: nginx
        ports:
        - containerPort: 80
#创建pod运行
kubectl create -f app.yaml

## 查看pod
kubectl get pod

## 进入pod容器,和docker类似操作
kubectl exec -it  web-76d9ff54d5-2gzjk bash

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、创建service
vim service.yaml

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  ports:
  - port: 8888 # 服务端口
    protocol: TCP
    targetPort: 80 # 容器端口
  selector:
    app: web # 标签选择器,这里的app=web正是我们刚才建立app
#创建service服务
kubectl create -f service.yaml

#查看状态
kubectl get service

在这里插入图片描述
在这里插入图片描述

3、最终效果
## ip映射(接下来就可以在任意节点通过ClusterIP负载均衡的访问后端应用了;通过 kubectl port-forward 端口转发的方式访问 K8S 中的应用)

kubectl port-forward service/web 7000:8888

## 浏览器访问
http://localhost:7000

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42357472/article/details/118937770