Kubernetes常用命令与常见问题

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

                       

本文原文出处: http://blog.csdn.net/bluishglc/article/details/52440312 严禁任何形式的转载,否则将委托CSDN官方维护权益!

常用命令

重启Master节点

for SERVICE in etcd kube-apiserver kube-controller-manager kube-scheduler; do     sudo systemctl restart $SERVICE    sudo systemctl enable $SERVICE    sudo systemctl status $SERVICE done
  
  
  • 1
  • 2
  • 3
  • 4
  • 5

查看Master节点服务状态

for SERVICE in etcd kube-apiserver kube-controller-manager kube-scheduler; do     sudo systemctl status $SERVICE done
  
  
  • 1
  • 2
  • 3

重启Slave节点

for SERVICE in kube-proxy kubelet flanneld; do     sudo systemctl restart $SERVICE    sudo systemctl enable $SERVICE    sudo systemctl status $SERVICE donesudo systemctl stop dockersudo /sbin/ifconfig docker0 downsudo brctl delbr docker0sudo systemctl start dockersudo systemctl enable dockersudo systemctl status docker 
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

注:docker服务总是在要flannel服务之后启动,flannel服务重启,docker服务必须重启。这是因为flannel会为docker配置好网络参数并以环境变量的方式传递给docker, 这些配置好的环境变量会存放在/run/flannel/docker文件里,文件中一般会存储这些变量:

DOCKER_OPT_BIP="--bip=172.16.54.1/24"DOCKER_OPT_IPMASQ="--ip-masq=true"DOCKER_OPT_MTU="--mtu=1450"DOCKER_NETWORK_OPTIONS=" --bip=172.16.54.1/24 --ip-masq=true --mtu=1450 "
  
  
  • 1
  • 2
  • 3
  • 4

查看Slave节点服务状态

for SERVICE in kube-proxy kubelet flanneld docker; do     sudo systemctl status $SERVICE done
  
  
  • 1
  • 2
  • 3

补充:如果机器上没有安装brctl,可使用如下命令安装:

sudo yum -y install bridge-utils
  
  
  • 1

查看RC、Service和Pod

for NAMESPACE in your-namespace; do     echo ""    echo "##########   [ $NAMESPACE ]   ##########"    echo ""    for ITEM in rc services pods; do         echo ""        echo "----------   [ $ITEM ]   ----------"        echo ""        sudo kubectl --namespace=$NAMESPACE get $ITEM    donedone
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

清理namepace下的所有RC、Service和Pod

for NAMESPACE in your-namespace; do     echo ""    echo "##########   [ $NAMESPACE ]   ##########"    echo ""    for ITEM in rc services pods; do         echo ""        echo "----------   [ $ITEM ]   ----------"        echo ""        sudo kubectl --namespace=$NAMESPACE delete $ITEM --all --cascade --timeout=0    donedone
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

清理Docker上所有的废弃镜像

所谓“废弃”镜像是指那些不再被任何tag标记的镜像。

sudo docker rmi $(sudo docker images | awk '/^<none>/ { print $3 }')
  
  
  • 1

我们可以把上述命令添加到cron作业里,让机器自动定时清理。

根据关键字删除docker容器

sudo docker rm -f $(sudo docker ps -a|awk '/your-keyword/ { print $1 }')
  
  
  • 1

常见问题

Service无法访问或不可用

初学者在刚刚接触Kubernetes时会遇到Service无法访问的问题,原因往往只是Service的selector的值没有和pod匹配,这种错误很容易通过查看service的endpoints信息来验证,如果endpoints为空,就说明selector的值配错了。只需要修改为对应pod的标签就可以了。

在kubernetes配置中挂载volume

在kubernetes的yaml配置文件中,使用spec.volumes来指定一个Pod需要的volume信息,使用spec.containers.volumeMounts来将container和一个volume关联起来。

Kubernetes支持非常多类型的volume, 具体的信息可以参考官方文档: http://kubernetes.io/docs/user-guide/volumes/ 其中最为常见的是

  • emptyDir: 随Pod删除,适用于临时存储、灾难恢复、共享运行时数据

  • hostPath 类似于Docker的本地Volume,把Pod上的某个文件夹映射到本地目录,用于访问一些本地资源(比如本地Docker)。

下面这个份配置是一个比较典型的例子,mysql的官方docker镜像中配置了一个指定的文件夹:/docker-entrypoint-initdb.d mysql容器启动时会自动执行这个文件夹下的shell脚本和sql文件,这给了应用程序初始化数据库的机会,所以当我们需要在mysql容器启动时初始化我们的数据库,我们以把数据库脚本放到本地的某个目录下,本例中我们使用的是/home/admin/mysql, 然后配置mysql的部署描述文件,把容器预定义的文件夹/docker-entrypoint-initdb.d映射到本地的/home/admin/mysql即可。在下述配置中,我们需要特别注意spec.volumesspec.containers.volumeMounts两处配置:

apiVersion: v1kind: ReplicationControllermetadata:  name: app-db  namespace: app-dev  labels:    name: app-dbspec:  replicas: 1  template:    metadata:      labels:        name: app-db    spec:      containers:        - name: app-db          image: my-registry:5000/docker_library/mysql:5.7          imagePullPolicy: Always          volumeMounts:            - mountPath: /docker-entrypoint-initdb.d              name: init-volume                    env:            - name: MYSQL_ROOT_PASSWORD              value: root          ports:            - containerPort: 3306              name: mysql      volumes:        - name: init-volume          hostPath:            path: /home/admin/mysql      host: db-node      nodeName: db-node
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
           

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值