Kubernetes学习笔记2-使用

操作

node

查看node节点

#查看集群下所有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?

 

删除节点(慎用,一般用于更换过ip的node)

#后面跟要删除的node名称
kubectl delete node  192.168.0.1

集群

查看集群信息

kubectl cluster-info

#集群详细信息
kubectl cluster-info dump

service

 

kubectl get service

组件

查看所有组件

kubectl get componentstatuses

pod

查看pod

#查看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

deployment


#查看所有
kubectl get deployment --all-namespaces

#查看详细信息
kubectl describe deployment kubernetes-dashboard --namespace=kube-system

#删除
kubectl delete deployment kubernetes-dashboard --namespace=kube-system

svc

#查看所有
kubectl get svc --all-namespaces

#查看详细信息
kubectl describe svc kubernetes-dashboardsvc --namespace=kube-system

#删除
kubectl delete svc kubernetes-dashboardsvc --namespace=kube-system

资源

使用命令创建pod(少用,我用了没找到删除的方法)

#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

 

使用yaml创建资源

创建pod

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
  

根据yaml删除pod

kubectl delete pod  xxx.yaml

创建rc

#和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

 

根据yaml删除rc

 
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

deployment&&server

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
                                  

网络卷(nfs)

只是修改一下volumes

#server 网络ip地址

volumes:
- name: testpath
  nfs:
   server: 192.168.0.122
   path: "/pathtest"

 

 

 

你可能感兴趣的:(docker,kubernetes)