使用 Kubectl 管理 Kubernetes 容器平台

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Kubectl 是一个用于操作 Kubernetes 集群的命令行接口,通过利用 Kubectl 的各种命令可以实现各种功能。

使用 Kubectl 管理 Kubernetes 容器平台



一、Kubectl 概述


二、Kubectl 创建和删除 Pod 相关操作


1.在集群上运行一个镜像

2.Kubectl run 语法

3.Pod 常见的状态

4.使用 Kubectl Delete 删除创建的对象

1)删除 Pod

2)删除 Deployment


三、YAML 语法规则


1.YAML 语法的基本语法规则

2.YAML 支持的三种数据结构


四、Kubectl Create 创建 Deployment


1.生成 Deployment 文件

2.使用 Create 创建 Deployment

3.使用 Get 命令查看 Pod 详细信息

4.使用 Describe 查看 K8s 中的详细信息


五、Kubectl 其他常用命令和参数说明


1.Kubectl Logs

2.Kubectl Exec

3.Kubectl Attach


六、使用 Kubectl 管理集群中 Deployment 资源和 Service 服务


1.生成 Deployment 和 Service 服务的配置文件

2.创建 Deployment 和 Serveice


准备工作:


  • 如果未部署 Kubernetes 容器集群管理系统需看:部署 Kubernetes 容器集群管理系统 来进行部署。
  • 该实验所需软件包从这个链接下载:https://pan.baidu.com/s/1cNdRaG5bIHr2YNo47-N1Fw
  • 提取码:ozfk


一、Kubectl 概述



Kubectl 是一个用于操作 Kubernetes 集群的命令行接口,通过利用 Kubectl 的各种命令可以实现各种功能。


二、Kubectl 创建和删除 Pod 相关操作



image.png


1.在集群上运行一个镜像


将 docker.io-nginx.tar 和 pod-infrastructure.tar 上传到 node1 和 node2 上并导入镜像:


[root@node1 ~]# ls
anaconda-ks.cfg      k8s-package         pod-infrastructure.tar
docker.io-nginx.tar  k8s-package.tar.gz
[root@node1 ~]# docker load -i docker.io-nginx.tar 
[root@node1 ~]# docker load -i pod-infrastructure.tar


image.png


2.Kubectl run 语法


Kubectl run 和 Docker run 一样,Kubectl run 能将一个 Pod 运行起来。


  • 格式:kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas]


在 master 上启动 Pod:


[root@master ~]# kubectl run nginx-1 --image=docker.io/nginx --replicas=1 --port=9000   


image.png


查看 Deployment:


[root@master ~]# kubectl get deployment


image.png


查看生成的 Pod,Kubernetes 将容器运行在 Pod 中以方便实施卷和网络共享等管理:


[root@master ~]# kubectl get pods


image.png


3.Pod 常见的状态


  • Running:正常运行的状态。
  • ContainerCreating:容器正在创建。
  • ImagePullBackOff:镜像拉取失败。
  • terminating:终止,删除 Pod 时的状态。


4.使用 Kubectl Delete 删除创建的对象


1)删除 Pod


[root@master ~]# kubectl delete pod nginx-1-2637872784-5kg5l
[root@master ~]# kubectl get pod


image.png


过 2 分钟左右,再次确认,发现已经运行


image.png


2)删除 Deployment


直接删除 Pod 触发了 Replicas 的确保机制,所以需要删除 Deployment


[root@master ~]# kubectl delete deployment nginx-1
[root@master ~]# kubectl get pod


image.png


三、YAML 语法规则



YAML 语言的设计目标,就是方便人类读写。它实质上是一种数据串行化格式。


1.YAML 语法的基本语法规则


  • 大小写敏感。
  • 使用缩进表示层级关系。
  • 缩进时不允许使用 Tab 键,只允许使用空格。
  • # 表示注释,从这个字符一直到行尾,都会被解析器忽略。
  • 在 YAML 里面,连续的项目(如:数组元素、集合元素)通过减号 - 来表示,Map 结构里面的键值对 key/value 用冒号 : 来分割。


2.YAML 支持的三种数据结构


  • 对象:键值对的集合,又称为 mapping 映射,hashes 哈希,dictionary 字典。
  • 数组:一组按次序排列的值,又称为 sequence 序列,list 列表。
  • 纯量(scalars):单个的、不可再分的值。


四、Kubectl Create 创建 Deployment



  • 使用 Kubectl run 在配置很复杂的需求时,需要非常长的一条语句,也很容易出错,也没法保存;
  • 所以更多场景下会使用 yaml 或者json 文件。


1.生成 Deployment 文件


上传 docker.io-mysql-mysql-server.tar 到 node1 和 node2 上:


[root@node1 ~]# docker load -i docker.io-mysql-mysql-server.tar


编写 Deployment 文件:


[root@master ~]# vim mysql-deployment.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: mysql
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: mysql
    spec:
      containers:
      - name: mysql
        image: docker.io/mysql/mysql-server
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3306
          protocol: TCP
        env:
          - name: MYSQL_ROOT_PASSWORD
            value: "123123"


image.png


2.使用 Create 创建 Deployment


[root@master ~]# kubectl create -f mysql-deployment.yaml 


image.png


  • 注意:当一个目录下,有多个 yaml 文件的时候,使用 kubectl create -f 目录 的方式一下全部创建。


3.使用 Get 命令查看 Pod 详细信息


[root@master ~]# kubectl get pod
[root@master ~]# kubectl get deployment


image.png


加上 -o wide 参数可以查看更详细的信息,如:看 Pod 在哪个 Node 上运行,Pod 的 IP 地址等信息。


[root@master ~]# kubectl get pod -o wide


image.png


  • 注意:10.255.5.2 这个 IP 地址是 flannel 中定义的网段中的一个 IP 地址(Pod 通过这个 IP 和 Master 进行通信)


在 node2 上查看运行的 Container:


[root@node2 ~]# docker ps


image.png


4.使用 Describe 查看 K8s 中的详细信息


image.png


五、Kubectl 其他常用命令和参数说明



image.png


1.Kubectl Logs


[root@master ~]# kubectl get pod
[root@master ~]# kubectl logs mysql-2388517676-588kb


image.png


2.Kubectl Exec


exec 命令用于到 pod 中执行一条命令。


[root@master ~]# kubectl get pod
[root@master ~]# kubectl exec -it mysql-2388517676-588kb -- /bin/bash
bash-4.2# exit


3.Kubectl Attach


attach 用于取得 Pod 中容器的实时信息,可以持续不断实时的取出消息。


[root@master ~]# kubectl attach mysql-2388517676-588kb


image.png


  • 到现在,所创建 Nginx 和 MySQL 都只是 Deployment,并没有对应 Service 服务;
  • 所以现在还不能直接在外网进行访问 Nginx 和 MySQL 服务。


六、使用 Kubectl 管理集群中 Deployment 资源和 Service 服务



1.生成 Deployment 和 Service 服务的配置文件


使用 Deployment 方式启动 Nginx 的 Pod 和 Service:


[root@master ~]# vim nginx-deployment.yaml
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
      - name: nginx
        image:  docker.io/nginx:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
          protocol: TCP


创建 Service:


[root@master ~]# vim nginx-svc.yaml             # 创建 Service
kind: Service
apiVersion: v1
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  type: NodePort
  ports:
  - protocol: TCP
    nodePort: 31001
    targetPort: 80
    port: 80
  selector:
    name: nginx


image.png


2.创建 Deployment 和 Serveice


[root@master ~]# kubectl create -f nginx-deployment.yaml 
[root@master ~]# kubectl create -f nginx-svc.yaml


image.png


查看:


[root@master ~]# kubectl get service
或者
[root@master ~]# kubectl get svc


image.png


查看详细信息:


[root@master ~]# kubectl get pod -o wide


image.png


  • 现在 Nginx Pod 的 80 端口已经映射到 Node 节点的 31001 端口上。


使用浏览器访问验证:


image.png


尽管 Nginx Pod 是在 node1 运行的,但我们去访问任意 node,都可以正常访问 Nginx 的;因为已经做了负载均衡,所以在 node2 上也可以成功访问 Web 服务。


image.png


修改一下默认主页:


[root@master ~]# kubectl get pod
[root@master ~]# kubectl exec -it nginx-1011335894-shsfx bash
root@nginx-1011335894-shsfx:/# echo Nginx > /usr/share/nginx/html/index.html     
root@nginx-1011335894-shsfx:/# exit


image.png


使用浏览器访问测试:


image.png


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
334 3
|
11月前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
10月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
630 274
|
8月前
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
633 17
|
11月前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
10月前
|
存储 运维 Kubernetes
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
飞轮科技推出了 Doris 的 Kubernetes Operator 开源项目(简称:Doris Operator),并捐赠给 Apache 基金会。该工具集成了原生 Kubernetes 资源的复杂管理能力,并融合了 Doris 组件间的分布式协同、用户集群形态的按需定制等经验,为用户提供了一个更简洁、高效、易用的容器化部署方案。
466 16
正式开源,Doris Operator 支持高效 Kubernetes 容器化部署方案
|
8月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
257 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
9月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
191 1
|
9月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
9月前
|
弹性计算 人工智能 资源调度
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多
    下一篇
    oss云网关配置