- 新建命名空间,在该命名空间中创建一个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
[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 # 也可以回滚到指定版本****
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
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