k8s作业练习

Day5

1、创建一个secret,并创建2个pod,pod1挂载该secret,路径为/secret,pod2使用环境变量引用该secret,该环境变量名为ABC

      secret名称:my-secret

     pod1名称:pod-volume-secret

     pod2名称:pod-env-secret

2、创建一个pv,在创建一个pod使用该pv

      容量:5Gi

      访问模式:ReadWriteOnce

3、创建一个pod并挂载数据卷,不可以用持久卷

      卷来源:emptyDir、hostPath 任意

      挂载路径:/data

4、将pv按照名称、容量排序并保存到/opt/pv文件

 

 

###################################################

Day4作业

1、创建一个pod,分配到指定标签node上

pod名称:web

镜像:nginx

node标签:disk=ssd

kubectl label node node1 disk=ssd #给node1节点打标签为dis=ssd
#创建yaml,指定节点上分配

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app_env_stage: devclear
  name: node1-web1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      nodeSelector:
        disk: ssd
      containers:
      - image: nginx:1.14
        name: nginx1
        resources: {}
#其中nodeSelector是关键,匹配到label的disk:ssd

2、确保在每个节点上运行一个pod,不考虑污点

pod名称:nginx

镜像:nginx

apiVersion: apps/v1beta2
kind: DaemonSet
	3.	metadata:
	4.	  name: ssd-monitor
	5.	  namespace: test
	6.	spec:
	7.	  selector:
	8.	    matchLabels:
	9.	      App: ssd-monitor
	10.	  template:
	11.	    metadata:
	12.	      labels:
	13.	        App: ssd-monitor
	14.	    spec:
	15.	      nodeSelector:            #指定节点标签 disk 带有 ssd 的主机上运行
	16.	        disk: ssd                  #如没有 nodeSelector, 即会在所有节点上运行一个 POD
	17.	      containers:
	18.	        - name: main
	19.	          image: luksa/ssd-monitor

3、列出命名空间下指定标签pod

命名空间名称为kube-system

标签k8s-app=kube-dns

kubectl get pods -n kube-system --show-labels -l=k8s-app=kube-dns

4、查看集群中状态为ready的node数量(不包含污点类型为NoSchedule的node),并将结果写到指定文件

kubectl get node|awk '/Ready/{print $1}'|xargs -I {} kubectl describe node {} |grep Taint |grep -vc NoSchedule > /opt/node.txt

5、设置成node不能调用,并使已被调度的pod重新调度

kubectl cordon node1
kubectl drain node1 --ignore-daemonsets

#####################################################################

Day3作业

1、在节点上配置kubelet托管启动一个pod

节点:k8s-node1

pod名称:web

镜像nginx

vim my-deploy.yaml   #创建yaml文件为
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      nodeName: node1
      containers:
      - image: nginx:1.14
        name: nginx1
        resources: {}

kubectl apply -f my-deploy.yaml  #生成在指定节点下的pod
kubectl get deploy  #查看部署内容

 

2、向pod中添加一个init容器,init容器创建一个空文件,如果该空文件没有被检测到pod退出

pod名称:web

apiVersion: v1
kind: Pod
metadata:
  name: webpod
  labels:
    app: myapp
spec:
  containers:
  - name: myapp-container
    image: busybox:1.28
    command: ['sh','-c','echo The app is running! && sleep 3600']
    livenessProbe: 
      exec: 
        command:  
        - cat
        - /tmp/healthy
  initContainers:
  - name: init-myservice
    image: busybox:1.28
    command: ['sh', '-c', "touch /tmp/healthy;sleep 2;rm -rf /tmp/healthy; sleep 3"]


其中livenessProbe是容器检测状态的,通过kubectl get pod 可以查看RESTARTS的状态

 

3、创建一个deployment副本数3,然后滚动更新镜像版本,并记录这个更新记录,最后在回滚到上一个版本

名称:nginx

镜像:1.16

更新镜像版本1.17

创建一个3个副本镜像的yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx
  name: web
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      nodeName: node1
      containers:
      - image: nginx:1.16
        name: nginx1
        resources: {}
kubectl set image deployment web nginx1=nginx1.17#升级镜像到1.17
kubect get deploy -o wide#查看当前升级的镜像版本信息

4、给web deployment扩容副本数为3

kubectl scale deployment web --replicas=10

5、创建一个pod,其中运行着nginx、redis、memcached、consul 4个容器

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: env
  name: my-env
spec:
  selector:
    matchLabels:
      app: env
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: env
    spec:
      containers:
      - image: nginx:1.16
        name: nginx2
        resources: {}
      - image: redis
        name: redis2
        resources: {}
      - image: memcached
        name: memcached2
        resources: {}
      - image: consul
        name: consul2
        resources: {}

6、把deployment输出json文件,再删除创建的deployment

kubectl get -o json deploy my-env >my-env.json

7、生成一个deployment yaml文件保存到/opt/deploy.yaml

名称:web

标签:app_env_stage=dev

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app_env_stage: devclear
  name: web123
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      nodeName: node1
      containers:
      - image: nginx:1.14
        name: nginx1
        resources: {}

kubectl get deploy -o wide --show-labels#查看labels
kubectl get deploy web123  -o yaml >/opt/123.yaml#导出

###################################################

Day2作业

一、查看pod日志,并将日志中Error的行记录到指定文件

      pod名称:web

      文件:/opt/web

      kubectl logs pod-01 -n cka|grep 'error' >1.txt #日志全部写入,其中grep是进行过滤有没有error字段的一行内容

二、查看指定标签使用cpu最高的pod,并记录到指定文件中

        标签:app=web

        文件:/opt/cpu

      kubectl top cpu sort by 'cpu' -tail=1 >1.txt   #根据cpu排序,取第一行内容

##################################################

Day1作业

一、新建命名空间,在该命名空间中创建一个pod

命名空间名称:cka

pod名称:pod-01

镜像: nginx

 kubectl get namespace #查看命名空间命令

 kubectl create namespace cka #创建命名看空间

 kubectl run pod-01 --image=nginx --namespace=cka #创建pod

 kubectl get pod --namespace=cka -i wide 查看pod

 

二、创建一个deployment 并暴露Service

名称:aliang-666

镜像:nginx

kubectl create deployment aliang-666 --image=nginx #生成一个deployment 镜像为nginx

kubectl expose deployment aliang-666 --port=80 --type=NodePort #创建一个服务

kubectl get service #查看创建的服务

kubectl delete service aliang-666 #删除一个服务

 

三、列出命名空间下指定标签pod

命名空间名称:kube-system

标签:k8s-app=kube-dns

kubectl get pod --namespace kube-system --show-labels #显示所有labels

kubectl get pod --namespace kube-system -L k8s-app=kube-dns

kubectl get pod --namespace kube-system --show-labels -l k8s-app=kube-dns #-l是查询LABEL里面子字符串

 

四、生成kubeconfig文件,配置dev和test集群环境

kubectl config use-context test #即可完成切换

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值