We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
学习 kubectl proxy 命令及其含义。回答如何通过 proxy 访问 kubernetes 集群?
Kubernetes Proxy API 是一种特殊的 API,Kube-APIServer 只是代理这类 API 的 HTTP 请求,然后将请求转发到某个节点上的 Kubelet 进程监听的端口上。最后实际是由该端口上的 REST API 响应请求。
kubectl proxy
kubectl proxy --port=8080 &
/api/v1/namespaces/<NAMESPACE>/services/<SERVICE-NAME>/proxy/
学习 kubectl port-forward 命令及其含义。回答如何通过 port-forward 访问应用?
从 Kubernetes v1.10 开始,kubectl port-forward 允许使用资源名称(例如 pod 名称)来选择匹配的 pod 来进行端口转发。
kubectl port-forward 命令转发了本地端口到 pod 端口的连接。它的手册现在这里可以查看。相比于 kubectl proxy,kubectl port-forward 也可以转发 TCP 流量而 kubectl proxy 只能转发 HTTP 流量。
kubectl port-forward redis-master-765d459796-258hz 7000:6379
这相当于
kubectl port-forward pods/redis-master-765d459796-258hz 7000:6379
或者
kubectl port-forward deployment/redis-master 7000:6379
kubectl port-forward rs/redis-master 7000:6379
kubectl port-forward svc/redis-master 7000:6379
以上所有命令都应该有效。输出应该类似于:
I0710 14:43:38.274550 3655 portforward.go:225] Forwarding from 127.0.0.1:7000 -> 6379 I0710 14:43:38.274797 3655 portforward.go:225] Forwarding from [::1]:7000 -> 6379
修改 Pod label 使其与 Deployment 不相符,集群有什么变化?
进一步学习 kubectl run。回答如何向 Pod 注入环境变量?如何查看是否注入成功?
kubectl run
kubectl run nginx-test --image=nginx:1.15.2 --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=onemore" --env="ONE=more" -n onemore
kubectl describe -n onemore deployments.apps nginx-test
进一步学习 kubectl rollout。回答如何通过 kubectl rollout 将应用回滚到指定版本?
$ kubectl rollout history deployment/nginx-deployment deployments "nginx-deployment" REVISION CHANGE-CAUSE 1 kubectl apply --filename=nginx-test.yml --record=true 2 kubectl replace --filename=nginx-test.yml --record=true
回滚到上一个版本
kubectl rollout undo deployment/nginx-deployment
回滚到指定版本
kubectl rollout undo deployment/nginx-deployment --to-revision=2
Note: 如果 CHANGE-CAUSE 为空,那是因为在创建 deployment 时没有使用 --record 选项
--record
Pod LivenessProbe 实验中,检查方式采用的是 http 模式。回答如何使用 exec 进行健康检查?请写出 yaml 文件。
apiVersion: v1 kind: Pod metadata: labels: test: liveness name: liveness-exec spec: containers: - name: liveness image: k8s.gcr.io/busybox args: - /bin/sh - -c - touch /tmp/healthy; sleep 30; rm -rf /tmp/healthy; sleep 600 livenessProbe: exec: command: - cat - /tmp/healthy initialDelaySeconds: 5 periodSeconds: 5
进一步学习 Pod Lifecycle。回答如何使用 PostStart Hook?请写出 yaml 文件。
apiVersion: v1 kind: Pod metadata: name: test-post-start spec: containers: - name: test-post-start-container image: busybox command: ["/bin/sh", "-c", "sleep 5 && echo $(date) 'written by entrypoint' >> log.log && sleep 600"] lifecycle: postStart: exec: command: ["/bin/sh", "-c", "sleep 30 && echo $(date) 'written by post start' >> log.log"] preStop: exec: command: ["/bin/sh", "-c", "sleep 15 && echo $(date) 'written by post stop' >> log.log"]
登录宿主机,使用 docker ps 查看 Pod,如何理解 docker ps 输出?
docker ps
docker ps –a
10张图带你深入理解Docker容器和镜像
docker images
docker images –a
docker history
docker stop
docker kill
docker pause
docker rm
docker rmi
-f
docker commit
docker build
docker exec
docker inspect
docker save
docker export
学习使用 Secret,然后创建一个 Secret 并在 Pod 内访问。请写出 secret 和 pod 的 yaml 文件。
game.properties
enemies=aliens lives=3 enemies.cheat=true enemies.cheat.level=noGoodRotten secret.code.passphrase=UUDDLRLRBABAS secret.code.allowed=true secret.code.lives=30
kubectl create secret generic game-secret --from-file=game.properties
pod_secret.yaml
apiVersion: v1 kind: Pod metadata: name: pod-secret spec: restartPolicy: Never containers: - name: test-container image: busybox:1.26 command: ["/bin/sh"] args: ["-c", "cat /etc/config/game.properties && sleep 60"] volumeMounts: - name: config-volume mountPath: /etc/config resources: requests: cpu: "0.1" memory: "100Mi" limits: cpu: "0.1" memory: "100Mi" volumes: - name: config-volume secret: secretName: game-secret
ConfigMap 实验中,我们采用文件加载的方式使用 ConfigMap。请写出利用环境变量加载 configmap 的例子。
创建 configmap
apiVersion: v1 kind: ConfigMap metadata: name: demo-configmap-1 namespace: xxx data: DEPLOYMENT_ENV: test
利用环境变量加载 configmap
apiVersion: apps/v1 kind: Deployment metadata: name: xxx namespace: xxx labels: app: xxx spec: strategy: type: Recreate selector: matchLabels: app: xxx template: metadata: labels: app: xxx spec: containers: - name: demo image: xxx/demo:0.0.1 imagePullPolicy: IfNotPresent args: ["--spring.profiles.active=$(DEPLOYMENT_ENV_KEY)"] ports: - containerPort: 8080 env: - name: DEPLOYMENT_ENV_KEY valueFrom: configMapKeyRef: name: demo-configmap-1 key: DEPLOYMENT_ENV
The text was updated successfully, but these errors were encountered:
No branches or pull requests
lab2-application-and-service
学习 kubectl proxy 命令及其含义。回答如何通过 proxy 访问 kubernetes 集群?
kubectl proxy
/api/v1/namespaces/<NAMESPACE>/services/<SERVICE-NAME>/proxy/
学习 kubectl port-forward 命令及其含义。回答如何通过 port-forward 访问应用?
kubectl port-forward redis-master-765d459796-258hz 7000:6379
这相当于
或者
或者
或者
以上所有命令都应该有效。输出应该类似于:
修改 Pod label 使其与 Deployment 不相符,集群有什么变化?
进一步学习 kubectl run。回答如何向 Pod 注入环境变量?如何查看是否注入成功?
kubectl run
进一步学习 kubectl rollout。回答如何通过 kubectl rollout 将应用回滚到指定版本?
回滚到上一个版本
回滚到指定版本
Note: 如果 CHANGE-CAUSE 为空,那是因为在创建 deployment 时没有使用
--record
选项Pod LivenessProbe 实验中,检查方式采用的是 http 模式。回答如何使用 exec 进行健康检查?请写出 yaml 文件。
进一步学习 Pod Lifecycle。回答如何使用 PostStart Hook?请写出 yaml 文件。
登录宿主机,使用 docker ps 查看 Pod,如何理解 docker ps 输出?
docker ps
会列出所有运行中的容器docker ps –a
会列出所有的容器,不管是运行的,还是停止的10张图带你深入理解Docker容器和镜像
docker images
会列出了所有顶层(top-level)镜像docker images –a
列出了所有的镜像,也可以说是列出了所有的可读层docker history
来查看docker stop
会向运行中的容器发送一个 SIGTERM 的信号,然后停止所有的进程docker kill
向所有运行在容器中的进程发送了一个不友好的 SIGKILL 信号docker pause
它利用了cgroups的特性将运行中的进程空间暂停docker rm
会移除构成容器的可读写层docker rmi
会移除构成镜像的一个只读层docker rmi
来移除最顶层(top level layer)(也可以说是镜像),你也可以使用-f
参数来强制删除中间的只读层docker commit
将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像docker build
非常有趣,它会反复的执行多个命令docker exec
会在运行中的容器执行一个新进程docker inspect
会提取出容器或者镜像最顶层的元数据docker save
会创建一个镜像的压缩文件,这个文件能够在另外一个主机的 Docker 上使用docker export
创建一个 tar 文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容docker history
递归地输出指定镜像的历史镜像学习使用 Secret,然后创建一个 Secret 并在 Pod 内访问。请写出 secret 和 pod 的 yaml 文件。
game.properties
pod_secret.yaml
ConfigMap 实验中,我们采用文件加载的方式使用 ConfigMap。请写出利用环境变量加载 configmap 的例子。
创建 configmap
利用环境变量加载 configmap
The text was updated successfully, but these errors were encountered: