cka练习记录

  • 新建命名空间,在该命名空间中创建一个pod
    参考链接
[root@master log]# kubectl create ns cka-test
[root@master log]# kubectl run nginx --image=nginx -n cka-test
pod/nginx created
[root@master log]# kubectl get pods -n cka-test
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          114s
[root@master log]# kubectl create deployment my-dep-tomcat --image=tomcat
[root@master log]# kubectl expose deployment my-dep-tomcat --port=8080 --target-port=8080
[root@master log]# kubectl get svc|grep my-dep-tomcat
my-dep-tomcat   ClusterIP   10.103.60.64    <none>        8080/TCP       18s
  • 列出命名空间下指定标签pod
[root@master log]# kubectl get pods -n cka-test -l run=nginx
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          33m
  • 查看pod日志,并将日志中Error的行记录到指定文件
[root@master ~]# kubectl logs nginx-6799fc88d8-wr2vt
  • 查看指定标签使用cpu最高的pod,并记录到到指定文件
[root@master ~]# kubectl top pods -l app=web --sort-by="cpu" > /opt/cpu
  • 在节点上配置kubelet托管启动一个pod(kubelet配置文件位置)
[root@master manifests]# cat web.yaml
apiVersion: v1
kind: Pod
metadata:
  name: web
  namespace:
  labels:
     app: myapp
spec:
  containers:
  - name: nginx
    image: nginx
[root@master manifests]# pwd
/etc/kubernetes/manifests
apiVersion: v1
kind: Pod
metadata:
  name: web22
spec:
  initContainers:
  - name: init
    image: nginx
    volumeMounts:
    - mountPath: /opt
      name: data
    command: ['sh', 'touch /test']
  containers:
  - image: nginx
    name: nginx
    livenessProbe:
      exec:
        command:
        - cat
        - /test
    volumeMounts:
    - mountPath: /opt
      name: data
  restartPolicy: Never
  volumes:
  - name: data
    emptyDir: {}
  • 创建一个deployment 副本数 3,然后滚动更新镜像版本,并记录这个更新记录,最后再回滚到上一个版本(如何滚动??)
kubectl create deployment web --image=nginx:1.16 
kubectl set image deployment web nginx=nginx:1.17 --record 
kubectl rollout history deploy web # 查看版本记录 
kubectl rollout undo deployment web # 回滚到上一个版本 
kubectl rollout undo deployment web --to-revision=1 # 也可以回滚到指定版本****
  • 给web deployment扩容副本数为3
kubectl scale deployment web --replicas=3
  • 创建一个pod,其中运行着nginx、redis、memcached、consul 4个容器
apiVersion: v1
kind: Pod
metadata:
  name: myapp-pod
  labels:
     app: myapp
spec:
  containers:
  - name: nginx
    image: nginx
  - name: redis
    image: redis
  - name: memcached
    image: memcached
  - name: consul
    image: consul
  • 生成一个deployment yaml文件保存到/opt/deploy.yaml
kubectl create deployment web --image=nginx --dry-run=client -o yaml > /opt/deploy.yaml
  • 创建一个pod,分配到指定标签node上
    参考链接
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    disktype: ssd
  • 确保在每个节点上运行一个pod
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  namespace: kube-system
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      containers:
      - name: fluentd-elasticsearch
        image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
  • 查看集群中状态为ready的node数量,不包含被打了NodeSchedule污点的节点,并将结果写到/opt/node.txt
kubectl describe node $(kubectl get nodes|grep Ready|awk '{print $1}') |grep Taint|grep -vc NoSchedule > /opt/node.txt
  • 设置成node不能调度,并使已被调度的pod重新调度
kubectl cordon <节点名称> 
kubectl drain node1 --ignore-daemonsets
  • 给一个pod创建service,并可以通过ClusterIP访问
kubectl expose pod web-pod --port=80 --target-port=80 --name=web-service --type=NodePort kubectl get svc web-service
  • 任意名称创建deployment和service,然后使用busybox容器nslookup解析service
kubectl create deployment nginx-dns --image=nginx
kubectl expose deployment nginx-dns --name=nginx-dns --port=80 
kubectl run bs-dns --image=busybox:1.28.4 busybox sleep 36000 
kubectl exec -it bs-dns -- nslookup nginx-dns
  • 列出命名空间下某个service关联的所有pod,并将pod名称写到/opt/pod.txt文件中(使用标签筛选)
先查看service用的标签选择器:
kubectl get service web -o yaml
kubectl get pods -l app=web -o name > /opt/pod.txt
  • 创建一个secret,并创建2个pod,pod1挂载该secret,路径为/etc/foo,pod2使用环境变量引用该secret,该变量的环境变量名为ABC

  • 创建一个Pod使用PV自动供给
  • 创建一个pod并挂载数据卷,不可以用持久卷
  • 将pv按照名称、容量排序,并保存到/opt/pv文件
  • 给定一个Kubernetes集群,排查管理节点组件存在问题
  • 工作节点 NotReady状态怎么解决?
  • 升级管理节点kubelet ,kubectl 组件由1.18 升级为1.19 ,工作节点不升级
  • 创建一个ingress
  • Pod创建一个边车容器读取业务容器日志
  • 创建一个clusterrole,关联到一个服务账号
  • default命名空间下所有pod可以互相访问,也可以访问其他命名空间Pod,但其他命名空间不能访问default命名空间Pod
posted @ 2022-02-22 16:29  曾某某scau  阅读(126)  评论(0编辑  收藏  举报