#查看集群下所有node节点
kubectl get nodes
#后面跟node 名称 查看一个节点 可以用 , 号隔开写多个名称
kubectl get node 192.168.0.1
#查看node的详细信息
kubectl describe node 192.168.0.1
#当查看节点出现以下问题时,重启下kube-apiserver 服务
The connection to the server localhost:8080 was refused - did you specify the right host or port?
#后面跟要删除的node名称
kubectl delete node 192.168.0.1
kubectl cluster-info
#集群详细信息
kubectl cluster-info dump
kubectl get service
kubectl get componentstatuses
#查看pod的状态和生命周期
kubectl describe pod name
#pod
#查看pod(所有命名空间)
kubectl get pod -o wide --all-namespaces
#查看详细信息 kube-system是命名空间
kubectl describe pod kubernetes-dashboard-2233311712-t96gg --namespace=kube-system
#查看pod(默认命名空间)
kubectl get pods
#查看pod详细信息
# READY 1/1了才是好的,如果不是1/1并且 status不是ContainerCreating ,那么就代表这个pod无法使用
#STATUS 有ContainerCreating和runginig,Waiting状态,前者表示失败,runing表示成功 ,waiting表示正在下载
#IP 为nginx 的访问ip
#NODE 为pod所在哪个node上
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
my-nginx-379829228-41d0n 1/1 runginig 0 4m <111.111.111.1> 192.168.0.121
my-nginx-379829228-qjllw 1/1 runginig 0 4m <111.111.121.1> 192.168.0.120
#如果状态一直处于ContainerCreating ,则通过describe 查看出了什么error
kubectl describe pod name
如果是 syncing pod, skipping: failed to "StartContainer" for "POD" with ErrImagePull错误,则执行以下三条命令
yum remove *rhsm* -y
wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm
rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem
删除
kubectl delete pod 自己的pod名字
#删除所有
kubectl delete pod --all
#强制删除 --namespace=kube-system 一般不需要带,这个是删除非default名命空间的
kubectl delete pod my-nginx-rc-lr3z7 --force --grace-period=0 --namespace=kube-system
#查看所有
kubectl get deployment --all-namespaces
#查看详细信息
kubectl describe deployment kubernetes-dashboard --namespace=kube-system
#删除
kubectl delete deployment kubernetes-dashboard --namespace=kube-system
#查看所有
kubectl get svc --all-namespaces
#查看详细信息
kubectl describe svc kubernetes-dashboardsvc --namespace=kube-system
#删除
kubectl delete svc kubernetes-dashboardsvc --namespace=kube-system
#my-nginx 自个起的名字
#--image 镜像路径
# --replicas 确保pod的数量维持在多少个
#--port 端口映射是多少
kubectl run my-nginx --image=nginx --replicas=2 --port=80
测试
#pod状态为runing后测试
elinks --dump http://192.168.0.120
kubectl exec -it pod名字 /bin/bash
apiVersion #apiversions 版本 不可乱写,可以用kubectl api-versions查看
kind 指定所创建的是什么。(pod,rc,service等)
metadata: #元数据,里面写描述类型的数据的
labels: #标签,自己定义K/V
containers: #容器,是一个list集合,可以写多个容器
image: #仓库地址,要写完整,不然默认去docker.io上下载
ports: 端口组
containerPort: 容器开放的端口
apiVersion:v1
kind: Pod
metadata:
name: my-nginx
labels:
test1: nginx
test2: nginx
spec:
containers:
- name: nginx
image: daocloud.io/library/nginx
ports:
- containerPort: 80
- name: mysql
image: daocloud.io/library/mysql
ports:
- containerPort: 3306
kubectl delete pod xxx.yaml
#和pod差别 kind, replicas
#replicas 是控制他创建几个pod
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-rc
labels:
app: nginx-rc
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: daocloud.io/library/nginx
ports:
- containerPort: 80
kubectl delete rc xxx.yaml
#相比rc多了 volumeMounts volumes两个配置
#volumeMounts volumes 的name必须一致,name无法大写
#路径可以事先不存在,执行时会自动创建
apiVersion: v1
kind: ReplicationController
metadata:
name: nginx-rc
labels:
app: nginx-rc
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: daocloud.io/library/nginx
volumeMounts:
- name: testpath
mountPath: /testpath
ports:
- containerPort: 80
volumes:
- name: testpath
hostPath:
path: /pathtest
server和deployment管理靠的时 selector 里面的K/V
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
labels:
app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: kubernetes-dashboard
template:
metadata:
labels:
app: kubernetes-dashboard
# Comment the following annotation if Dashboard must not be deployed on master
annotations:
scheduler.alpha.kubernetes.io/tolerations: |
[
{
"key": "dedicated",
"operator": "Equal",
"value": "master",
"effect": "NoSchedule"
}
]
spec:
containers:
- name: kubernetes-dashboard
image: docker.io/siriuszg/kubernetes-dashboard-amd64
imagePullPolicy: Always
ports:
- containerPort: 9090
protocol: TCP
args:
# Uncomment the following line to manually specify Kubernetes API server Host
# If not specified, Dashboard will attempt to auto discover the API server and connect
# to it. Uncomment only if the default does not work.
- --apiserver-host=http://192.168.0.128:8080
livenessProbe:
httpGet:
path: /
port: 9090
initialDelaySeconds: 30
timeoutSeconds: 30
#dashboardsvc
---
kind: Service
apiVersion: v1
metadata:
labels:
app: kubernetes-dashboard
name: kubernetes-dashboardsvc
namespace: kube-system
spec:
type: NodePort
ports:
- port: 80
targetPort: 9090
selector:
app: kubernetes-dashboard
只是修改一下volumes
#server 网络ip地址
volumes:
- name: testpath
nfs:
server: 192.168.0.122
path: "/pathtest"