Kubernetes笔记

集群和节点

获取参与集群的节点列表。

kubectl get nodes

查看节点的使用情况。

kubectl describe nodes

命名空间

在一个集群中创建更多的集群。
据说在单一集群中进行多个团队进行开发等情况下使用。

获取Namespace列表

kubectl get namespace

Pod

コンテナ集合体の単位で、最低1つのコンテナを持つ。
Kubernetesでは、(コンテナが1つの場合でも)Pod単位でデプロイする。

部署Pod

kubectl apply -f マニフェストファイル
#-f マニフェストファイルのパスを指定
#マニフェストファイルとはKubernetesの各種リソースを定義するファイル

获取Pod列表

kubectl get pod

Pod内のコンテナに入る

kubectl exec -it Pod名 sh -c コンテナ名

在Pod中打印容器的标准输出

kubectl logs -f Pod名 -c コンテナ名

删除Pod

kubectl delete pod Pod名
マニフェストファイルベースで削除する
kubectl delete -f マニフェストファイル

查看Pod的详细信息。

当Pod无法启动时,需要检查其状态。

kubectl describe pod <pod-name>

清单文件

参考来源可以通过浏览互联网或查看Kubernetes API参考手册来逐渐理解(感觉应该能理解)。
如果对YAML格式本来就不太了解的话,请参考此处。

版本使参与者能够了解使用该API的应用程序的兼容性以及支持的功能,并提供一致的编程接口。

apiVersion用于指定对象的Schema版本。

亲切

kind 是用来指定创建对象的名称。
为了创建 Pod,需要指定 Pod。

元数据

指定Object的元数据。

规格

spec定义了对象期望的状态。简单来说,这个字段是指定具体设置的地方。

复制集

生成和管理多个具有相同规格的Pod。
将yaml文件中的kind设置为ReplicaSet。

谷歌 Kubernetes 引擎 (GKE)

创建集群(GKE)

尽量以便宜的preemptible f1-micro实例来启动

gcloud container clusters create <クラスタ名> --preemptible --machine-type=f1-micro --num-nodes=3 --disk-size=10 --zone=<ゾーン名>

设置kubectl的身份验证凭据

gcloud container clusters get-credentials クラスタ名 --zone=ゾーン

给 Docker 镜像打标签并构建。

# Container Registryの格納先をタグにしてDockerイメージをビルドする
# タグの形式は、asia.gcr.io/[GCP_PROJECT_ID]/[IMAGE_NAME]:[TAG]
docker image build -t asia.gcr.io/GCP_PROJECT/test:1.0 .

将内容推送到容器注册表。

#GCP_PROJECTはプロジェクト名ではなくプロジェクトID
gcloud auth configure-docker
docker -- push asia.gcr.io/GCP_PROJECT/test:1.0

容器注册表中的镜像列表

gcloud container images list --repository=[HOSTNAME]/[PROJECT-ID]
#[HOSTNAME]はasia.gcr.io等

数据持久化

在GKE上,应用VolumeClaim的yaml时,会创建GCE的持久磁盘。

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: volumeclaim-airflow
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
kubectl get pvc

个人的迷恋点

谷歌云平台的Docker支持已经结束。

据说 gcloud docker 不支持 Docker 18.03 及更高版本,所以如果使用 docker 客户端版本在 18.03 以上,并且使用 gcloud docker 将容器镜像发布到容器注册表中,创建 pod 时拉取镜像会出现错误。这时候可以通过运行 gcloud auth configure-docker 命令来重新配置,然后使用 docker — push 命令重新发布。

pod无法启动。

当你不太理解如何参考Pod时,可以尝试在Pod的YAML文件中添加命令来描述。

当您尝试使用kubectl exec访问已启动的pod时,系统会卡住。

由于集群规格不足的可能性很高,可以选择打开自动缩放或启动升级节点规格的集群。

使用Cloud Build时出现的错误。

ResponseError: code=403, message=EXTERNAL: 添加了GKE管理员权限到CloudBuild服务帐户中,以解决您遇到的问题。

创建Ingress时的健康检查

如果前往进行健康检查的页面返回状态码不是200,则健康检查将报错。
如果在Airflow中进行了用户认证设置,会发生重定向,因此如果健康检查仍然是”/”,则会报错。请参考此处来更改健康检查的目标。
关于何时会出现状态码200,请在这里将服务设置为负载均衡器类型进行确认。

其他

上下文

用于连接的信息

kubectl config get-contexts
kubectl config delete-context クラスタ名
广告
将在 10 秒后关闭
bannerAds