kubernetes 实战

简易 kubernetes 入门

2018-09-04  本文已影响0人  RuiWang14

才接触 kubernetes 的时候觉得太复杂了,但是反反复复装了好多遍之后发现其实也就那么回事。希望下面的内容能够帮助大家尽早度过入门时的阵痛期。

环境准备

centos 7.2(本文所有步骤都在 疼讯云 进行了验证)

安装

0.切换 yum 源 (可选)

# 没有 wget 的话需要
# yum install -y wget
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache

1. 安装 kubernetes

yum install -y etc kubernetes

2. 修改配置

Docker配置文件 /etc/sysconfig/docker,其中的OPTIONS的内容设置为:

$ vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled=false --insecure-registry gcr.io'

Kubernetes apiserver的配置文件 /etc/kubernetes/apiserver,有如下:

$ vim /etc/kubernetes/apiserver
 KUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"

去掉 ServiceAccount 选项

3. 启动服务

systemctl start etc
systemctl start docker
systemctl start kube-apiserver.service
systemctl start kube-controller-manager.service
systemctl start kube-scheduler.service
systemctl start kubelet.service
systemctl start kube-proxy.service

检查 kubernetes 是否启动:

ps -ef | grep kube

简单例子

创建 pod

创建 httpd-dev.yaml 文件,并写入 以下 内容:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: http
spec:
  replicas: 3
  template:
    metadata:
      labels:
        run: http
    spec:
      containers:
      - name: http
        image: http
        ports:
        - containerPort: 80

执行以下命令,启动 pod:

 kubectl apply -f httpd-dev.yaml 
 kubectl get pod -o wide

可以看到:


kubectl get pod -o wide

我们启动了 3 个 pod 来运行 htppd 镜像。并为这 3 个 pod 分配了 ip,可以再 k8s 中的容器和节点进行访问,如下图:


curl

创建服务

新建 httpd-svc.yml,并写入以下内容:

apiVersion: v1
kind: Service
metadata:
  name: httpd-svc
spec:
  selector:
    run: http
  ports:
  - protocol: TCP
    port: 8888
    targetPort: 80

创建 service:

kubectl apply -f httpd-svc.yaml

查看 service:

kubectl get service
kubectl get service

可以看见 httpd-svc 分配到了一个 cluster-ip,我们可以通过这个ip进行访问:

curl 10.254.114.93:8888
curl service

可以通过以下命令查看 service 的详情:

kubectl describe service httpd-svc 
kubectl describe service httpd-svc

可能遇见的问题:

pod 一直处于ContainerCreating状态问题。可以通过下面的命令查看详情:

kubectl describe pod

发现会报这个错误:

failed to "StartContainer" for "POD" with ErrImagePull: "image pull failed for
registry.access.redhat.com/rhel7/pod-infrastructure:latest, this may be because there are no credentials
on this request.  details: (open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such file
or directory)"

发现这是一个链接文件,指向 rhsm。


直接用 yum 下载相关组件:

 yum -y install *rhsm*

查看是否有 /etc/rhsm/ca/redhat-uep.pem 文件,一般应该是有了,不过如果没有也不要害怕,我们可以简单的伪造一个空文件:

touch /etc/rhsm/ca/redhat-uep.pem

再 kubectl describe pod 一下,看pod的状态,应该好了。如果还是没有好的话可以 kubectl delete pod httpd ,删掉后重新新建 pod。

小结

总之遇到问题不要怕,多尝试,多去网上找资料,肯定会有办法的。资料收集能力也是程序员很重要的一种能力,可千万不能因为怕麻烦就放弃啊。

上一篇下一篇

猜你喜欢

热点阅读