kubernetes(命令)
kubectl运行需要配置文件的,默认只在master的$HOME/.kube。若需要在node节点上运行,需要将配置文件复制到node上。
也就是要在master上进行:
scp -r HOME/.kube node1:HOME/
命令式对象配置:直接使用命令去操作kubernetes资源
创建namespace
kubectl create namespace dev
kubectl create ns dev #简写
查看namespace
kubectl get ns
kubectl get ns default
kubectl describe ns default
在该namespace下创建并运行一个nginx的pod
格式:kubectl run (pod控制器) [参数:--image --port --namespace]
kubectl run nginx001 --image=nginx:1.17.1 -n dev #nginx001为pod控制器的名字
kubectl run nginx002 --image=nginx:1.17.1 --port=80 --namespace=dev
查看pod
kubectl get pod -n dev
kubectl get pod -n dev -o wide
kubectl describe pods pod-cbb995bbf-t6hww -n dev
删除pod
kubectl delete pod pod-864f9875b9-pcw7x #默认名称空间下
kubectl delete pod pod-864f9875b9-pcw7x -n dev #dev名称空间下
删除namespace
kubectl delete ns dev
命令式对象配置:通过命令配置和配置文件去操作kubernetes资源(只能操作一个文件)
kubectl create -f nginxpod.yaml
kubectl delete -f nginxpod.yaml
声明式对象配置,通过apply命令和配置文件去操作kubernetes资源(可以操作一个目录)
kubectl apply -f nginxpod.yaml #创建、更新pod
-----------------------------------------------------------------------------------------------------------------
deployment控制器
创建pod控制器
命令创建Pod时就是先创建pod控制器,然后通过控制器来创建、管理pod
#nginx为pod控制器的名字,replicas为副本数量,也就是要启动pod的数量
kubectl run nginx --image=nginx:1.17.1 --port=80 --replicas=3 -n dev
查看pod控制器
kubectl get deployment -n dev
kubectl describe deploy nginx -n dev
删除pod控制器
#命令创建的pod,是由控制器创建的
#yaml配置文件创建的pod,是单纯的pod,没有控制器
#若pod由控制器创建的,只删除pod后,控制器会立即重建一个pod,所以需要删除控制器
kubectl delete deploy nginx -n dev
-----------------------------------------------------------
label标签
对各个Pod分组,方便管理。
namesapce分隔的组不能互通,label分隔的组能互通
查看pod标签
kubectl get pod -n dev --show-labels
给pod添加标签
kubectl label pod nginx -n dev verson=1.0
给pod更新标签
kubectl label pod nginx -n dev version=2.0 --overwrite
给pod删除标签
kubectl label pod nginx -n dev version-
筛选标签
kubectl get pod -l "version=2.0" -n dev --show-labels
kubectl get pod -l "version!=2.0" -n dev --show-labels
kubectl get pod -l "version in (1.0,2.0)" -n dev --show-labels
kubectl get pod -l "version not in (2.0)" -n dev --show-labels
---------------------------------------------------------------------
service
pod重启后IP地址会改变,且IP是虚拟IP,外部无法访问。service是一组同类pod的访问接口。service的IP不变。
一、创建仅集群内部可以访问的service(ClusterIP)
#暴露service(暴露控制器nginx,指定service名称、类型、端口、内部pod端口)
kubectl expose deploy nginx --name=svc-nginx1 --type=ClusterIP --port=80 --target-port=80 -n dev
#查看service
kubectl get svc -n dev
二、创建外部可以访问的service(NodePort)
kubectl expose deploy nginx --name=svc-nginx2 --type=NodePort --port=80 --target-port=80 -n dev
删除svc
kubectl delete svc svc-nginx-1 -n dev
------------------------------------------------------------
编写yaml
#查看一级属性
kubectl explain pod
#查看二级属性
kubectl explain pod.metadata
#以yaml形式查看pod
kubectl get pod nginx-64777cd5540f64vx -n dev -o yaml
#交互模式进入查看容器
kubectl exec pod-command(pod名字) -n dev -it -c busybox(容器名字) /bin/sh
#通过yaml文件创建Pod
kubectl create -f yaml文件名
#缩进左对齐才能表示同级关系
#-表示数组(列表)
#:后面必须加空格
#status: #状态,kubernetes自动生成
apiVersion: v1 #版本(kubectl api-versions查询)
kind: Pod #类型(node、pod、svc、deploy等,kubectl api-resources查询)
metadata: #元数据(名字、名称空间、标签)
name: pod-base #pod名字,必须为小写
namespace: dev
labels:
-user: balaba
spec: #描述,对各种配置的描述
containers: #容器列表,定义容器的详细信息
- name: nginx #容器名字
image: nginx:1.17.1 #指定容器tag,若指定tag具体版本号,则拉取镜像策略默认值为IfNotPresent。若tag为latest,拉取策略默认值为always
imagePullPolicy: Always #镜像拉取策略(Always:一直从远程拉取镜像,IfNotPresent:本地有就用本地的,本地没有再从远程仓库拉取镜像,Never:从不去远程仓库拉取,本地没有就报错)
ports: #设置容器暴露的端口列表
-name: nginx-port #端口名字,必须保证name在pod中唯一
containerPort: 80 #容器要监听的端口号
protocol: TCP #使用的协议
resources: #资源配置
limits: #资源上限(超过门限,容器终止并重启)
cpu: "2"
memory: "10G"
requests: #资源下线(若环境资源不够,容器不启动)
cpu: "1"
memory: "10M"
- name: busybox
image: busybox:1.30 #busybox不是一个进程,是类似一个工具的集合(一堆命令),kubernetes集群启动后会将其关闭,所以需要配置命令,让其占用个进程
command: ["/bin/sh","-c","touch /tmp/hello.txt;while true;do /bin/echo $(date +%T) >>/tmp/hello.txt; sleep 3; done;"] #容器的启动命令列表,如不确定,使用打包时使用的启动命令
nodeName: #根据nodeName的值将pod调度到指定的node节点上
nodeSelector: #根据nodeSelector定义的信息将pod调度到包含这些label的node上
hostNetwork: #是否使用主机网络,默认fales
volumes: #存储卷,定义pod上面挂载的存储信息
restartPolicy: #重启策略,pod遇到故障时的处理策略(Always,OnFailure,Never)

浙公网安备 33010602011771号