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 クラスタ名