(安装过程在 ubuntu 安装 k8s 的基础上做了精简。)

有两台 ubuntu16.04 的机器,已安装了docker,希望安装 K8S 组成集群。

在两台机器上,

1、关闭交换分区。

swapoff -a

2、修改 docker 的进程隔离策略。

vi /etc/docker/daemon.json
# 在{}内的最后增加一行 "exec-opts": ["native.cgroupdriver=systemd"],上一行加个','。
{
        # 其他语句
        "exec-opts": ["native.cgroupdriver=systemd"]
}

# 重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

3、安装 kubeadm、kubectl、kubelet。

# 使得 apt 支持 ssl 传输
apt-get update && apt-get install -y apt-transport-https
# 下载 gpg 密钥
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
# 添加 k8s 镜像源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
# 更新源列表
apt-get update
# 下载 kubectl,kubeadm以及 kubelet
apt-get install -y kubelet kubeadm kubectl

把其中一台 (172.16.1.1)作为 master,

4、初始化 master。

kubeadm init \
--apiserver-advertise-address=172.16.1.1 \
--image-repository registry.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16

# 如果出现 kubelet 起不来的错误,用 “journalctl -xeu kubelet” 查看细节。
# 我出现了 "Failed to run kubelet" err="failed to run Kubelet: misconfiguration: kubelet cgroup driver: \"systemd\" is different from docker cgroup driver: \"cgroupfs\"" 的错误,做了步骤2就好了。
 

5、执行 kubectl get nodes,出错参考 报错:The connection to the server localhost:8080 was refused - did you specify the right host or port?

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

6、安装 flannel,出错参考 Connecting to raw.githubusercontent.com failed: Connection refused. 解决办法

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

# 如果解析不了 raw.githubusercontent.com,在 /etc/hosts 中增加 199.232.28.133 raw.githubusercontent.com

把另一台(172.16.1.2)作为 slave,

4、加入集群。

# 在 master 上执行,获取加入集群的完整命令。
kubeadm token create --print-join-command

# 返回结果如下, 在 slave 上执行它。
kubeadm join 172.16.1.1:6443 --token h6tzjw.ctjuhvjrvntbz289 --discovery-token-ca-cert-hash sha256:c26e7d178ff0ac1395267886d87093ec05e563e1e4edc2f4dc3b3ce3b83e3568

基本好了。

在 master 上用 kubectl get nodes 会看到两台机器了,

在 slave 上用 kubectl get nodes 会出错 ,“The connection to the server localhost:8080 was refused - did you specify the right host or port?”,把 master上的admin.conf 远程复制到 slave 上即可。

# 在 master 上执行。
scp /etc/kubernetes/admin.conf root@172.16.1.2:/root/.kube/config

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐