继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

简易 kubernetes 入门

慕村9548890
关注TA
已关注
手记 1260
粉丝 227
获赞 990

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

环境准备

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

安装

0.切换 yum 源 (可选)

# 没有 wget 的话需要# yum install -y wgetwget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repoyum 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 etcsystemctl start dockersystemctl start kube-apiserver.servicesystemctl start kube-controller-manager.servicesystemctl start kube-scheduler.servicesystemctl start kubelet.servicesystemctl 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

可以看到:


webp

kubectl get pod -o wide


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


webp

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

webp

kubectl get service

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

curl 10.254.114.93:8888

webp

curl service

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

kubectl describe service httpd-svc

webp

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。


webp

直接用 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。

小结

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



作者:RuiWang14
链接:https://www.jianshu.com/p/f49e16e7e334


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP