k8s作业练习
Day1作业一、新建命名空间,在该命名空间中创建一个pod命名空间名称:ckapod名称:pod-01镜像: nginxkubectl get namespace #查看命名空间命令kubectl create namespace cka #创建命名看空间kubectl run pod-01 --image=nginx --namespace=cka #创建podkubectl get pod -
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)