kubernetes学习一:安装及创建第一个rc与pod

Posted shawhe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes学习一:安装及创建第一个rc与pod相关的知识,希望对你有一定的参考价值。

准备工作

首先准备Kubernets的环境,这里我使用的是centos7
Kubernetes v1.5.2
Docker version 1.12.6, build 85d7426/1.12.6


安装

yum install docker etcd kubernetes -y

修改配置文件

vim /etc/kubernetes/apiserver
将KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRange

r,SecurityContextDeny,ServiceAccount,ResourceQuota"中的ServiceAccount

不然后期创建rc与pod的时候会出现pod无法创建但是rc能创建


启动服务

systemctl start etcd
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
systemctl start docker

创建rc

创建rc文件,语法为yaml格式,vim mysql-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"

yaml定义文件中kind属性,用来表明此资源对象的类型,比如这里的值为“ReplicationController”表示这是一个RC;
spec一节中是RC的相关属性定义,比如spec.selecror是RC的Pod标签选择器,即监控和管理拥有这些标签的pod实,
确保当前集群上始终有且仅有replicas个pod实例在运行,这里我们设置为1表示只能运行一个mysql pod实例。当集群
中运行的Pod的数量小于replicas时,RC会根据spec.template.metadata.labels指定了该Pod标签,需要特别注意的是:
这里的labels必须匹配之前的spec.selector,否则此RC每次创建了一个无法匹配label的pod,就会不停的尝试新的pod,
最终陷入循环。


执行Rc

kubectl create -f mysql-rc.yaml

查看
kubectl get rc
kubectl get pods


错误整理

在创建rc与pod时出现迟迟无发运行pods状态如下:
技术图片
可以使用kubectl describe pods Pod_Name来查看是什么原因。
其中我遇到错误为:
技术图片
需要安装rhsmyum install *rhsm*
删除rc与pod kubectl delete -f XXX.yaml 或者kubectl delete pods pod_name
详细使用方法查看 kubectl delete --help
之后便可已正常运行。

以上是关于kubernetes学习一:安装及创建第一个rc与pod的主要内容,如果未能解决你的问题,请参考以下文章

第154天学习打卡(Kubernetes 使用Helm快速部署应用, 如何自己创建Chart)

Kubernetes概念之deployment

Kubernetes 部署 Mysql 8

Kubernetes 集群组件

(2022版)一套教程搞定k8s安装到实战 | Kubernetes学习路线

Kubernetes的控制器类型及使用案例