简介

Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。

在Kubenetes中,所有的容器均在Pod中运行,一个Pod可以承载一个或者多个相关的容器,在后边的案例中,同一个Pod中的容器会部署在同一个物理机器上并且能够共享资源。一个Pod也可以包含O个或者多个磁盘卷组(volumes),这些卷组将会以目录的形式提供给一个容器,或者被所有Pod中的容器共享,对于用户创建的每个Pod,系统会自动选择那个健康并且有足够容量的机器,然后创建类似容器的容器,当容器创建失败的时候,容器会被node agent自动的重启,这个node agent叫kubelet,但是,如果是Pod失败或者机器,它不会自动的转移并且启动,除非用户定义了 replication controller。

minikube

一个轻量级得k8s实现,部署仅包含一个节点的简单集群

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

启动

minikube start --image-mirror-country='cn'

kubectl

用于交互的命令行工具

安装:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

查看节点

kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 13h v1.28.3

查看服务

kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 13h

查看pod

kubectl get pod
No resources found in default namespace.

创建pod

kubectl run nginx --image=nginx

或者

kubectl create deployment nginx-deployment --image=nginx

编辑

kubectl edit deployment nginx-deployment

查看日志

kubectl log pod名

进入容器

kubectl exec -it pod名 -- /bin/bash

获取所有资源对象

kubectl get all

删除资源对象

kubectl delete 对象名

配置文件应用

创建

kubectl create -f xxx.yaml

删除

kubectl delete -f xxx.yaml

应用

kubectl apply -f xxx.yaml

service的使用

将一个pod设置为service

kubectl create -f xxx.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP

或者

kubectl expose pod nginx --name=nginx-service --type=ClusterIP --port=80 --target-port=80

查询详细信息

kubectl describe service 服务名

更改为NodePort类型(使其在集群外部可以访问)

apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080

获取ip

kubectl get nodes -o wide