CKA认证之K8S集群搭建及资源创建实操练习
第二章-K8S核心概念与集群搭建使用课后作业1、使用Kubeadm搭建一个K8s集群2、新建命名空间,在该命名空间中创建一个pod3、创建一个deployment并暴露Service名称:web镜像:nginx4、列出命名空间下指定标签pod命名空间名称:kube-system标签:k8s-app=kube-dns以下为课后作业的步骤及验证过程一、使用Kubeadm搭建一个K8s集群使用kubea
第二章-K8S核心概念与集群搭建使用
实操题目
1、使用Kubeadm搭建一个K8s集群
2、新建命名空间,在该命名空间中创建一个pod
3、创建一个deployment并暴露Service
名称:web
镜像:nginx
4、列出命名空间下指定标签pod
命名空间名称:kube-system
标签:k8s-app=kube-dns
以下为实操题目的步骤及验证过程
一、使用Kubeadm搭建一个K8s集群
使用kubeadm部署k8s v1.20.0可参考:《CentOS7 Kubeadm 部署Kubernetes 1.20.0》
[root@k8s-master ~]# kubectl get node -o wide
二、新建命名空间,在该命名空间中创建一个pod
题目要求:命名空间名称为:zfj-test,pod名称为:pod-01,镜像使用:nginx
2.1 使用命令行创建对象
[root@k8s-master ~]# kubectl create namespace zfj-test #创建zfj-test命名空间
[root@k8s-master ~]# kubectl run --image=nginx -n zfj-test pod-01 #基于nginx镜像运行一个pod
[root@k8s-master ~]# kubectl get pods -n zfj-test #查看zfj-test命名空间下的pod资源
2.2 使用声明式API创建对象(yaml文件方式):
[root@k8s-master ~]# vim pod-01.yaml
apiVersion: v1 #api版本
kind: Pod #创建的资源对象为Pod
metadata: #元数据
name: pod-01 #Pod名称
namespace: zfj-test #命名空间
labels: #为Pod添加标签
app: nginx #标签为app=nginx
spec: #期望状态
containers: #容器配置
- name: nginx #容器名称
image: nginx #容器镜像
[root@k8s-master pod]# kubectl apply -f pod-01.yaml
[root@k8s-master pod]# kubectl get pods -n zfj-test
以上两种方式都可以完成题目要求,只是第一种是直接使用kubectl命令行创建,第二个是使用声明式方式创建(yaml或者json文件创建)
三、创建一个deployment并暴露Service
题目要求:名称为:web,镜像为:nginx,副本数为2,命名空间为zfj-test
3.1 使用命令行创建对象
3.1.1 创建Deployment资源
[root@k8s-master ~]# kubectl create deployment web --image=nginx --replicas=2 -n zfj-test #在zfj-test命名空间下创建名为web,副本数为2的Deployment控制器
[root@k8s-master ~]# kubectl get deployments,pods -n zfj-test -l app=web
3.1.2 创建Service资源
#基于deployment控制器暴露容器,--port为service-cliusterIP的端口,--target-port为容器监端口口,--type为Service类型,-n为指定命名空间
[root@k8s-master ~]# kubectl expose deployment web --port=80 --target-port=80 --type=NodePort -n zfj-test
[root@k8s-master ~]# kubectl get service -n zfj-test -o wide #查看service资源信息
[root@k8s-master ~]# curl http://ClusterIP #集群内部测试访问
集群外部测试访问:集群外部的客户端需要访问的话,访问k8s集群中任意一个节点的30815端口即可。30815端口为宿主机的随机端口。当外部客户端访问这一个端口时,宿主机默认会通过iptables规则将请求转发给对应的Pod进行响应。
3.2 使用声明式API创建对象
3.2.1 yaml文件创建Deployment控制器
[root@k8s-master deployment]# vim web-deployment.yaml
apiVersion: apps/v1 #API版本
kind: Deployment #创建的资源类型
metadata: #Deployment元数据
labels: #Deployment配置标签
app: web #标签为app=web
name: web #Deployment名称为web
namespace: zfj-test #指定命名空间
spec: #Deployment期望状态
replicas: 2 #Pod副本数
selector: #标签选择器
matchLabels: #匹配标签
app: web #匹配存在app=web标签的Pod对象
template: #Pod模板
metadata: #Pod元数据
labels: #Pod标签
app: web #Pod标签为app=web
spec: #Pod期望状态
containers: #容器配置
- image: nginx #容器镜像为nginx
name: nginx #容器名称为nginx
[root@k8s-master deployment]# kubectl apply -f web-deployment.yaml
[root@k8s-master deployment]# kubectl get deployments.apps -n zfj-test
3.2.2 yaml文件创建Service资源
[root@k8s-master service]# vim web-service.yaml
apiVersion: v1 #api版本
kind: Service #创建的资源类型
metadata: #Service元数据
labels: #Service标签
app: web #标签为app=web
name: web #Service名称为web
namespace: zfj-test #指定命名空间名称
spec: #Service期望状态
ports: #端口配置
- port: 80 #Service端口为80
protocol: TCP #协议为TCP
targetPort: 80 #容器监听端口为80
selector: #标签选择器
app: web #匹配标签存在app=web的Pod对象
type: NodePort #Service类型为NodePort,其中还有Cluster,LoadBalancer
[root@k8s-master service]# kubectl apply -f web-service.yaml
[root@k8s-master service]# kubectl get svc -n zfj-test -o wide
集群外部客户端浏览器访问:
http://Node-ip:NodePort/
四、列出命名空间下指定标签pod
题目要求:命名空间名称:kube-system,标签:k8s-app=kube-dns
[root@k8s-master ~]# kubectl get pods -n kube-system --show-labels #查看kube-system命名空间下所有pod及对应的标签。-n为指定命名空间,--show-labels为显示标签
[root@k8s-master ~]# kubectl get pods -n kube-system -l k8s-app=kube-dns --show-labels #筛选kube-system命名空间下标签为k8s-app=kube-dns的Pod。-l为筛选标签
更多推荐
所有评论(0)