之前我们学习了很多的概念及简单的使用官网提供的页面玩了玩k8S的基本内容,那本章我们来在自己的服务器环境中,实践安装搭建一个kubernetes环境。

由于时间问题,继续盗图,懒得自己画
Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用

1.安装前准备

关闭防火墙、设置selinux,千篇一律的设置,没劲,这里不做详细介绍。

2.安装etcd和K8S

yum install -y etcd kubernetes

3.修改配置文件

3.1docker配置文件

vi /etc/sysconfig/docker

修改如下内容:

OPTIONS='--selinux-enabled=false  --log-driver=journald --signature-verification=false --insecure-registry gcr.io'

3.2 K8S apiserver配置文件

删除ServiceAccount参数。

vim /etc/kubernetes/apiserver

Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用

4.启动所有服务

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

5.单机版环境安装完毕,构建一个应用到Kubernetes中

5.1我们来创建一个RC定义的yaml文件mysql-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: "skyfans"

5.2 将ta发布到Kubernetes中。

kubectl create -f mysql-rc.yaml

Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用

5.2.1 查看创建的RC的情况

kubectl get rc

Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用

5.2.2 查看pod创建情况

kubectl get pods

Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用
什么情况??没有资源内容??我们明明创建了但是为什么没有呢??
仔细分析下:
Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用
通过截图我们可以看到,CURRENT数量为0.

扩展姿势:参数解释
DESIRED: 期望部署副本数
CURRENT: 当前部署副本数
UP-TO-DATE:最新部署副本数(图中无显示)
AVAILBLE: 运行中的副本数(图中无显示)
AGE: 已经运行的时间

就是说我们期望的是1,但是当前部署的副本数为0。为什么呢??

查询了下,发现了是个K8S的坑,我们安装完毕后,缺失了部分配置导致。

5.3 遇到坑1解决方法

5.3.1 执行如下命令

openssl genrsa -out /tmp/serviceaccount.key 2048

5.3.2 编辑apiserver配置文件

vim /etc/kubernetes/apiserver

找到编辑

KUBE_API_ARGS="--service_account_key_file=/tmp/serviceaccount.key"

5.3.3 编辑controller-manager配置文件:

vim /etc/kubernetes/controller-manager

找到编辑

KUBE_CONTROLLER_MANAGER_ARGS="--service_account_private_key_file=/tmp/serviceaccount.key"

5.3.4 重启服务

 systemctl restart kube-apiserver
 systemctl restart kube-controller-manager

5.3.5 删除原来的创建的RC

 kubectl delete -f mysql-rc.yaml

5.3.6 重新创建

 kubectl create -f mysql-rc.yaml

5.3.7 验证

kubectl get rc

Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用
哦了,已调整好了。

5.4遇到的坑2

好,我们在来看下pod的状态

kubectl get pods

Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用
状态是在创建,等待了几分钟后在查看
Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用
依然在创建,怎么可能??查看为啥呢?

kubectl describe pod mysql-714lt

Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用
Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用

看到registry.access.redhat.com/rhel7/pod-infrastructure:latest感觉很奇怪,我设置的仓库是gcr.io,为什么去拉取这个镜像,怀疑是不是什么没有安装好。尝试运行docker pull registry.access.redhat.com/rhel7/pod-infrastructure:latest,提示redhat-ca.crt: no such file or directory。

ls查看改文件是个软连接,链接目标是/etc/rhsm
Kubernetes七-服务器本地安装运行Kubernetes环境并通过yaml文件创建应用
查看没有rhsm相关内容。

尝试安装rhsm

yum install *rhsm*

再次查看状态,已经OK了。

kubectl describe pod mysql-714lt

好本章我们就讲到这里。

相关文章:

  • 2022-01-19
  • 2022-12-23
  • 2021-10-14
  • 2022-12-23
  • 2022-12-23
  • 2021-09-02
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-21
  • 2022-01-30
  • 2022-12-23
  • 2022-01-08
相关资源
相似解决方案