官方文档:将pod分配给节点
题目1:调度pod到指定节点
设置配置环境kubectl config use-context k8s
按如下要求创建并调度一个pod:
- 名称:nginx-kusc00401
- image: nginx
- Node selector: disk=ssd
解答:
# 1. 切换配置环境
kubectl config use-context k8s
# 2.查看是否有节点有标签disk=ssd
kubectl get nodes --show-labels
# 如果没有就加上
kubectl label nodes node1 disk=ssd
# 3.编辑yaml文件
[root@master2 nodeselector]# cat pod-selector.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-kusc00401
spec:
containers:
- name: nginx
image: docker.io/janakiramm/myapp:v1
imagePullPolicy: IfNotPresent
nodeSelector:
disk: ssd
查看:
kubectl get pods -o wide
题目2:
题目:创建多容器的pod
设置配置环境kubectl config use-context k8s
创建一个名字为kucc4的pod,在pod里面分别为以下每个images单独运行一个app container
(可能会有1-4 个images):nginx+redis+memcached+consul
解答2:
# 1.切换环境
kubectl config use-context k8s
#2.编写yaml
[root@master2 nodeselector]# cat many-2-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: kucc4
spec:
containers:
- name: nginx
image: nginx
- redis: redis
image: redis
- name: memcached
image: memcached
- name: consul
image: consul
# 3.执行
kubectl apply -f many-2-pod.yaml
# 查看
kubectl get pods
题目3:监控pod的日志
设置配置环境kubectl config use-context k8s
监控pod foo的日志并:
- 提取与错误unable-to-access-website 相对应的日志行
- 将这些日志行写入到/opt/KUTR00101/foo
解答:
kubectl logs foo | grep unable-to-access-website >/opt/KUTR00101/foo
题目4:排查集群中故障节点
设置配置环境kubectl config use-context ek8s
名为wk8s-node-0的kubernetes worker node处于Not Ready状态。检查发生这种情况的原因,并采取相应措施将node 恢复为Ready 状态,确保所做的任何更改永久生效。
可使用以下命令通过ssh 连接到故障node:
ssh wk8s-node-0
可使用一下命令在该node上获取更高权限:
sudo -i
解答4:
实际就是node节点,kublet服务没启动,远程连接过去启动服务就行