【K8S】快捷搭建k8s学习环境

1. Play with kubernetes

使用此网站可以简单搭建kubernetes,提供了一个简易的、无需安装任何软件的 Kubernetes 学习和实验环境。但是他每次创建只会保存四个小时,也就是说四个小时后初始化以及实验的一些数据就清空了。当然有得有失吗,简单的学习是可以使用此平台的。

1.1. 部署前准备
  1. 进入对应网站Play with Kubernetes,使用GitHub或者Docker账号登陆,然后Start。

  • 点击添加多几个节点,一般我们设置一主二从的节点搭配。

1.2. 搭建集群环境
  1. 选择一个节点作为Master主节点,执行以下命令
1. Initializes cluster master node:初始化集群节点
kubeadm init --apiserver-advertise-address $(hostname -i) --pod-network-cidr 10.5.0.0/16

2. Initialize cluster networking:初始化集群网络
kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml

3. 打印work节点加入集群的命令
kubeadm token create --print-join-command
会生成如下命令,work节点想要加入到集群执行如下命令即可
kubeadm join 192.168.0.23:6443 --token 9fzz0d.gx4ztvcyscsp6xg9 --discovery-token-ca-cert-hash sha256:f730105a8a4a61049214bc8894c8b7eb92402bae43887191e0ffc412d4cb6d43

4. 执行命令查看集群节点
kubectl get nodes
  
4. (Optional) Create an nginx deployment:创建一个nginx应用(可选)
kubectl apply -f https://raw.githubusercontent.com/kubernetes/website/master/content/en/examples/application/nginx-app.yaml

  1. 步骤4链接对应的内容如下:
apiVersion: v1
kind: Service	#用于网络分发
metadata:
  name: my-nginx-svc
  labels:
    app: nginx
spec:
  type: LoadBalancer
  ports:
  - port: 80
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: Deployment	#用于pod创建
metadata:
  name: my-nginx
  labels:
    app: nginx
spec:
  replicas: 3	#3个pod副本
  selector:
    matchLabels:
      app: nginx
  template:	#pod的期望
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2	#此pod镜像为nginx
        ports:
        - containerPort: 80	

  1. Master节点执行Yaml文件,便可创建3个Pod,通过kubectl get pod -o wide即可查看

  1. 通过命令删除其中一个pod

我们发现删除这个Pod后,又新建了一个Pod,这是因为Pod由Deployment管理,在前面Yaml文件的spec下定义了3个replicas,Deployment会将Pod的副本数扩到与定义的副本数相等。

那应该如何删除这些Pod呢?

①删除资源

如果是Deployment创建的资源,直接删除这个资源将自动终止由它管理的所有Pod:

首先通过标签Lable查到对应的Deployment:

删除deployment:

这会删除在Deployment中定义的所有资源,比如Deployment以及它创建的所有Pod和相关的副本控制。

②缩放资源副本

如果基于需要临时调整指定Pod的数量,可以缩放Deployment

kubectl scale --replicas=0 -f nginx.yaml

这会将DeploymentReplicaSet管理的Pod数量缩减为0,从而删除所有Pod实例。

1.3. 使用kubectl部署
  1. 创建一个deployment的YAML文件
apiVersion: apps/v1	#与k8s集群版本有关,使用 kubectl api-versions 即可查看当前集群支持的版本
kind: Deployment	#该配置的类型,我们使用的是 Deployment
metadata:	        #译名为元数据,即 Deployment 的一些基本属性和信息
  name: nginx-deployment	#Deployment 的名称
  labels:	    #标签,可以灵活定位一个或多个资源,其中key和value均可自定义,可以定义多组,目前不需要理解
    app: nginx	#为该Deployment设置key为app,value为nginx的标签
spec:	        #这是关于该Deployment的描述,可以理解为你期待该Deployment在k8s中如何使用
  replicas: 1	#使用该Deployment创建一个应用程序实例
  selector:	    #标签选择器,与上面的标签共同作用,目前不需要理解
    matchLabels: #选择包含标签app:nginx的资源
      app: nginx
  template:	    #这是选择或创建的Pod的模板
    metadata:	#Pod的元数据
      labels:	#Pod的标签,上面的selector即选择包含标签app:nginx的Pod
        app: nginx
    spec:	    #期望Pod实现的功能(即在pod中部署)
      containers:	#生成container,与docker中的container是同一种
      - name: nginx	#container的名称
        image: nginx:1.7.9	#使用镜像nginx:1.7.9创建container,该container默认80端口可访问
  1. 执行命令及结果

  1. 进行扩容操作

  1. 进行缩容操作

Yaml文件里面的replicas副本数没变,执行 kubectl scale 命令时,Kubernetes通过API与集群进行交互,它改变的是集群中实际运行的资源状态(如副本数量),而不是直接修改您本地或线上存储的 YAML 文件内容。因此,kubectl scale 操作不会改变 YAML 文件里 replicas 的数值。

  • YAML文件是Kubernetes资源的声明性配置。在使用kubectl(例如kubectl apply)命令应用到集群时,这些配置被存储在Kubernetes的etcd数据库中。
  • kubectl scale直接改变了etcd中存储的资源状态,而YAML文件的内容在本地或储存于版本控制系统中,并不会自动同步或更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值