创建 vagrant ubuntu 虚机
创建2个虚机,一个 master,一个 worker。
Vagrantfile 模板:
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-16.04"
#config.vm.provision "docker"
config.vm.hostname = "master"
config.vm.network "private_network", type: "dhcp"
config.vm.provider "virtualbox" do |vb|
vb.memory = "2048"
vb.cpus = 2
end
end
分别执行 vagrant up
启动虚机,启动后执行 vagrant ssh
登录。
安装 docker
apt-get update && apt-get install docker.io -y
每台虚机中都安装。
安装 kubelet kubeadm kubectl
# 安装 1.9.6 版本
# 如需安装其他版本,可以查询版本列表:
# curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - && \
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && \
sudo apt-get update -q && \
sudo apt-get install -qy kubelet=1.9.6-00 kubectl=1.9.6-00 kubeadm=1.9.6-00
# 服务自启动
systemctl start docker && systemctl enable docker
systemctl start kubelet && systemctl enable kubelet
# 命令自动提示
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
# 准备工作
swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sed -i '0,/ExecStart=/s//Environment="KUBELET_EXTRA_ARGS=--cgroup-driver=cgroupfs"\n&/' /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
每台虚机中都安装。
master 中初始化 cluster
# 查看本机 ip 并设置系统变量
ifconfig
IPADDR=172.28.128.8
# 查看本机名称
NODENAME=$(hostname -s)
# 初始化
kubeadm init --apiserver-cert-extra-sans=$IPADDR --apiserver-advertise-address=$IPADDR --node-name $NODENAME
执行完成后会给出提示,执行提示的命令,例如:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
还会给出 worker 节点加入的命令,例如:
kubeadm join --token ef0914.ef20fb77d714a7fd 172.28.128.9:6443 --discovery-token-ca-cert-hash sha256:b8272dfce74563023bd8ad62a42d3e8aadb3da4cb51940464eb10516fb0f22fd
cluster 创建完成后,需要安装网络:
kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')
worker 加入 cluster
执行上面提示的 kubeadm join ...
master 中验证
现在一个最简单的 cluster 已经搭建出来了,下面验证一下。
查看 node 列表:
kubectl get nodes
如果正常,node 的状态都应是 Ready
。
验证 DNS:
kubectl run -it --image=busybox:1.28.3 --restart=Never dns-test /bin/sh
/ # nslookup kubernetes.default
正常输出类似:
Server: 10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
Name: kubernetes.default
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
如果有问题可以通过一个几个命令配合查找问题:
journalctl -f
kubectl describe node xxx
kubectl describe pod xxx
kubectl logs xxx
网友评论