记录刷题- -
Job:创建一个固定结束次数的并行 Job,共 2 个 pod,运行 45 completion,Job pod 打印“Beijing”,镜像自选。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| apiVersion: batch/v1 kind: Job metadata: name: job spec: parallelism: 2 completions: 45 restartPolicy: Never template: metadata: name: job spec: containers: - name: job image: busybox:latest command: - 'sh' - '-c' - 'echo Beijing'
|
initContainer:pod 的 container 在启动时会检查 volume 中某个目录是否存在某个文件,若不存在则退出,若存在,则运行。要求修改 pod 的 yaml,通过 initContainer 创建该文件,使pod运行。
将名为 ek8s-node-1 的 node 设置为不可用,并重新调度该 node 上所有运行的 pods。
1 2 3 4
| # cordon:将node设置为不可用,将阻止新pod调度到该节点之上,但不会影响任何已经在其上的 pod,这是重启节点或者执行其他维护操作之前的一个有用的准备步骤,DaemonSet创建的pod能够容忍节点的不可调度属性。 kubectl cordon ek8s-node-1 # drain:从节点安全的驱逐所有pods。 kubectl drain ek8s-node-1 --delete-local-data --ignore-daemonsets --force
|
在现有的 namespace app-team1 中创建一个名为 cicd-token 的新 ServiceAccount,创建一个 deployment-clusterrole 且只能够创建 Deployment、DaemonSet、StatefulSet 资源的 Cluster Role,并将新的 deployment-clusterrole 绑定到 cicd-token。
1 2 3 4 5
| kubectl create sa cicd-token -n app-team1
kubectl create clusterrole deployment-clusterrole --verb=create --resource=Deployment,StatefulSet,DaemonSet
kubectl create rolebinding cicd-rolebinding --clusterrole=deployment-clusterrolr --serviceaccount=app-team1:cicd-token
|
k8s master 1.20.0 升级到 1.20.1,并升级 kubelet、kubectl。
1 2 3 4 5 6 7 8 9 10
| # 将节点设为不可调度性 kubectl cordon mk8s-master-0 kubectl drain mk8s-master-0 --igonre-daemonsets # 升级 apt-get update apt-get -y install kubeadm=1.20.1-00 kubeadm update apply v1.20.1 --etcd-upgrade=false apt-get -y install kubelet=1.20.1-00 kubectl=1.20.1-00 # 将不可调度性去除 kubectl uncordon mk8s-master-0
|
etcd 备份/恢复。
1 2 3 4
| # 备份 ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> snapshot save <backup-file-location> # 恢复 ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 --cacert=<trusted-ca-file> --cert=<cert-file> --key=<key-file> snapshot restore <backup-file-location>
|
在 internal 的命名空间下创建一个名为 allow-port-from-namespace 的 NetworkPolicy,此 NetworkPolicy 允许 internal 中的 pod 访问 echo 命名空间中 9000 的端口。
1 2 3
| # 先获取echo租户的labels kubectl get ns echo --show-labels echo-key: echo-value
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-port-from-namespace namespace: internal spec: podSelector: {} policyTypes: - Ingress ingress: - from: - namespaceSelector: matchLabels: echo-key: echo-value ports: - protocol: TCP port: 9000
|
在 ing-internal 下创建一个 ingress 名为 ping,通过 5678 端口暴露 hello svc 下的 /hello。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ping namespace: ing-internal spec: rules: - http: paths: - path: /hello backend: service: name: hello port: number: 5678
|
将 deployment webserver 扩展至 6 pods。
1
| kubectl scale deployment webserver --replicas 6
|
创建一个名为 nginx-kusc00401 的 pod,镜像为 nginx,调度到 disk=ssd 的节点上。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| apiVersion: v1 kind: Pod metadata: name: nginx-kusc00401 spec: containers: - name: nginx image: nginx:1.20.1 imagePullPolicy: Always ports: - name: http containerPort: 80 NodeSelector: disk=ssd
|
将一个现有的 pod 集成到 k8s 内置日志记录体系结构中(kubectl logs),使用 busybox 来将名为 sidecar 容器添加到名为 11-factor-app 的 pod 中,sidecar 需运行 /bin/sh -c tail -n+1 -f /var/log/11-factor-app.log
,使用安装在 /var/log 的 volume,使日志文件 11-factor-app.log 可用于 sidecar 容器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| apiVersion: v1 kind: Pod metadata: name: 11-factor-app spec: volumes: - name: log emptyDir: {} containers: - name: count image: busybox command: - /bin/sh - -c - > i=0; while true; do echo "$i: $(date)" >> /var/log/11-factor-app.log; i=$((i+1)); sleep 1; done volumeMounts: - name: log mountPath: /var/log - name: sidecar image: busybox command: - /bin/sh - -c - 'tail -n+1 -f /var/log/11-factor-app.log' volumeMounts: - name: log mountPath: /var/log
|
通过 pod label name=cpu-utilizer 寻找 cpu 占用最多的 pod,并写入 /opt/tmp/tmp.txt
。
1
| kubectl top pod -A -l name=cpu-utilizer --sort-by=cpu >> /opt/tmp/tmp.txt
|