依据书中推荐的第二种方式----在官方 github 编译中下载二进制包 Server Binaries.
wget https://dl.k8s.io/v1.9.2/kubernetes-client-linux-amd64.tar.gz
wget 用法 bolg
按书指示安装 etcd , 版本 3.2.17. 执行 验证语句 etcdctl endpoint health
无效 , 使用 etcdctl cluster-health
替代
解压 server 包 , 依据指示继续.
tar -zxvf archive_name.tar.gz -C /usr/bin/
几个配置文件 , 在本地编辑好后直接拷贝 , 节约时间. 随后创建 logdir
文件夹.
安装 docker , 官网 guide , 国内 blog , 使用国内的镜像源 , 快.
问题提示 , docker 与 kubelet 不在一个 cgroup . 由于 docker 直接命令安装 , 不知道 docker.service 位置
root@mylinux-002:/usr/lib/systemd/system# systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2019-02-16 15:48:58 CST; 18h ago
Docs: https://docs.docker.com
Main PID: 12101 (dockerd)
Tasks: 14
CGroup: /system.slice/docker.service
└─12101 /usr/bin/dockerd -H fd:// --exec-opt native.cgroupdriver=systemd
可以看到 load 信息中有 docker.service 的位置 , 在其中进行修改.
#ExecStart=/usr/bin/dockerd -H fd://
ExecStart=/usr/bin/dockerd -H fd:// --exec-opt native.cgroupdriver=systemd
继续 , 在完全按照书本编写后 , 无法运行 , 提示
kubelet.go:1275] Image garbage collection failed once. Stats initialization may not have completed yet: failed to get imageFs info: unable to find data for container /
container_manager_linux.go:583] [ContainerManager]: Fail to get rootfs information unable to find data for container /
第一次尝试 , 以为是 pause容器的问题 , 使用 docker 下载一个 3.1 并本地化 tag 为 pause-amd64:3.0.
依旧出错 , 再次搜索后 , 使用 github issue 中 ingvagabund 的方法 , 新建 kubelet.kubeconfig 文件. 注意 yaml 格式书写 yaml 格式 blog , yaml 转 json , 书写检查.
ports:
- port: 8080
nodePort: 30001
等同于 ports: [ { port: 8080, nodePort: 30001 } ]
ports:
- port: 8080
- nodePort: 30001
等同于 ports: [ { port: 8080 }, { nodePort: 30001 } ],
文件 kubelet , kubelet.kubeconfig 以及 kubelet.service:
root@mylinux-002:/etc/kubernetes# cat kubelet
KUBELET_ARGS="--cgroup-driver=systemd --kubeconfig=/etc/kubernetes/kubelet.kubeconfig --hostname-override=192.168.121.109 --fail-swap-on=false --logtostderr=false --log-dir=/var/log/kubernetes --v=2"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=pause-amd64:3.0"
root@mylinux-002:/etc/kubernetes# cat kubelet.kubeconfig
apiVersion: v1
kind: Config
clusters:
- cluster:
server: http://127.0.0.1:8080/
name: local
contexts:
- context:
cluster: local
name: local
current-context: local
root@mylinux-002:/usr/lib/systemd/system# cat kubelet.service
[unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service
[Service]
WorkingDirectory=/var/lib/kubelet
EnvironmentFile=/etc/kubernetes/kubelet
ExecStart=/usr/bin/kubelet \
$KUBELET_POD_INFRA_CONTAINER \
$KUBELET_ARGS
Restart=on-failure
[Install]
WantedBy=multi-user.target
在修改完毕后 , 重新依序启动各个服务 , 发现虽然 kubelet 依然有错误信息 , 但节点正常部署.
原计划 4 个小时安装结束 , 耗时太长 , 主要在于与书中版本不对. 其次是 , 与网络博客中的大部分安装步骤不一致 , 没有对照. 最后 , 动手太早 , 应该多看书 , 尝试使用其中的推荐方法 , 和到官网搜索推荐安装方式.
其他博客安装教程:
follow me
青蛙小白
忙碌在路上
官网
k8s handbook
因为一开始安装的是 ubuntu 没有 yum 命令 , 所以没有书中第一节提到的 kubeadm 工具. 但是 , 其实 ubuntu 环境里也有相关的 kubeadm 下载. 应该用这个工具加快安装部署速度.
在另一台 1c2g 同内网机器下安装 k8s 客户端?