CKA认证

1、 RBAC

设置配置环境:
[student@node-1] $ kubectl config use-context k8s

Context
为部署流水线创建一个新的ClusterRole并将其绑定到范围为特定的 namespace 的特定ServiceAccount。

Task
创建一个名为deployment-clusterrole且仅允许创建以下资源类型的新ClusterRole:
Deployment
StatefulSet
DaemonSet
在现有的 namespace app-team1中创建一个名为cicd-token的新 ServiceAccount。
限于 namespace app-team1中,将新的ClusterRole deployment-clusterrole绑定到新的 ServiceAccount cicd-token
切换集群
kubectl config use-context k8s

开始操作
kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployments,statefulsets,daemonsets
kubectl -n app-team1 create serviceaccount cicd-token

# 题目中要求“限于namespace app-team1中”,则创建rolebinding。没有要去,则创建clusterrolebinding。
# rolebinding后面的名字cicd-token-rolebinding随便起的,因为题目中没有要求,如果题目中有要求,就不能随便起了。
kubectl -n app-team1 create rolebinding cicd-token-rolebinding --clusterrole=deployment-clusterrole --serviceaccount=app-team1:cicd-token

检查
kubectl -n app-team1 describe rolebinding cicd-token-rolebinding
参考连接:http://kubernetes.io/zh/docs/reference/access-authn-authz/rbac

2、查看 pod 的 CPU

设置配置环境:
[student@node-1] $ kubectl config use-context k8s

Task
通过 pod label name=cpu-loader,找到运行时占用大量 CPU 的 pod,
并将占用 CPU 最高的 pod 名称写入文件 /opt/KUTR000401/KUTR00401.txt(已存在)。
开始操作
# kubectl config use-context k8s

# 查看pod名称 -A是所有namespace
kubectl top pod -l name=cpu-loader --sort-by=cpu -A

# 将cpu占用最多的pod的name写入/opt/test1.txt文件
echo "查出来的Pod Name" > /opt/KUTR000401/KUTR00401.txt

检查
cat /opt/KUTR000401/KUTR00401.txt

3、 NetworkPolicy

Task - 1(可能会考的问题1)

设置配置环境:
[student@node-1] $ kubectl config use-context hk8s

在现有的namespace my-app中创建一个名为allow-port-from-namespace的新NetworkPolicy。
确保新的NetworkPolicy允许namespace echo中的Pods连接到namespace my-app中的Pods的9000端口。

进一步确保新的NetworkPolicy:
不允许对没有在监听 端口9000的Pods的访问
不允许非来自 namespace echo中的Pods的访问
[root@k8s-master cka]# cat networkpolicy.yaml 
#注意 :set paste,防止yaml文件空格错序。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-port-from-namespace
  namespace: my-app   #被访问者的命名空间
spec:
  podSelector:      #这两行必须要写,或者也可以写成一行为podSelector: {}
    matchLabels: {
   }
  policyTypes:
  - Ingress   #策略影响入栈流量
  ingress:
  - from:   #允许流量的来源
    - namespaceSelector:
        matchLabels:
          project: echo    #访问者的命名空间的标签label
    #- podSelector: {}    #注意,这个不写。如果ingress里也写了- podSelector: {},则会导致my-app中的pod可以访问my-app中pod的9000了,这样不满足题目要求不允许非来自 namespace echo中的Pods的访问。而这道题有两种问法,在下面的Task-2里,是需要写的。
    ports:
    - protocol: TCP
      port: 9000  #被访问者公开的端口
Task - 2(可能会考的问题2)

设置配置环境:
[student@node-1] $ kubectl config use-context hk8s

在现有的namespace internal中创建一个名为allow-port-from-namespace-2的新NetworkPolicy。
确保新的NetworkPolicy允许命名空间internal中的Pods能访问相同命名空间下的所有Pods的8080端口。

进一步确保新的NetworkPolicy:
不允许对没有在监听 端口8080的Pods的访问
不允许非来自 namespace internal中的Pods的访问
[root@k8s-master cka]# cat networkpolicy.yaml 
#注意 :set paste,防止yaml文件空格错序。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-port-from-namespace-2
  namespace: internal
spec:
  podSelector:      #这两行必须要写,或者也可以写成一行为podSelector: {}
    matchLabels: {
   }
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector: {
   }  #必须要写,这样才能满足internal命名空间下的所有Pods可以互相访问8080端口。
    ports:
    - protocol: TCP
      port: 8080
参考连接:http://kubernetes.io/zh/docs/concepts/services-networking/network-policies

4、暴露服务 service

设置配置环境:
[student@node-1] $ kubectl config use-context k8s

Task
请重新配置现有的部署front-end以及添加名为http的端口规范来公开现有容器 nginx 的端口80/tcp。
创建一个名为front-end-svc的新服务,以公开容器端口http。
配置此服务,以通过在排定的节点上的 NodePort 来公开各个 Pods。
开始操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值