现在有三台宿主机A、B、C,用来部署kubernetes集群。A来当master,B和C当干活的worker node
1. 获取docker
在三台机器上都需要安装docker,每台机器上都执行以下命令获取docker,并添加到repository:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
2. 获取kubernetes
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF
sudo apt-get update
3. 安装docker和kubernetes相关的三个工具
sudo apt-get install docker-ce kubelet kubeadm kubectl
可以分别通过docker --version 或者kubelet --version 查看docker以及这几个工具安装成功没有
4. 集群 master宿主机A上 执行:
(1)初始化kubernetes集群
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
(2)配置kubeconfig
kubeconfig是用于在node节点上kubelet和kube-proxy访问集群的身份认证。使用 kubeconfig(即证书) 和 token 两种认证方式是最简单也最通用的认证方式
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
(3)flannel CNI插件作为network overlay
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
5. 集群worker node B和C上执行,加入集群:
sudo kubeadm join 'KUBERNETES_MASTER_IP':6443 --token 'UNIQUE_TOKEN' --discovery-token-ca-cert-hash sha256:'UNIQUE_HASH'
6. 集群 master宿主机A上 执行
(1)deployment
跑一个deployment,里面至少包含一个pod,看是否成功
kubectl create deployment nginx --image=nginx
kubectl get deployments
kubectl get pods 查看pod是否跑起来了
(2)转换pod端口port
kubectl get pods 查到其中一个pod的name是nginx-86c57db685-jdhf7,所以下面的转换端口命令中用的pod也是nginx-86c57db685-jdhf7,这个名字根据个人情况而定。
kubectl port-forward nginx-86c57db685-jdhf7 8081:80 把容器container的端口从80转为8081
curl --head http://127.0.0.1:8081 此命令测试8081端口成功没有
kubectl exec -it nginx-86c57db685-jdhf7 -- nginx -v
(3)创建服务service
kubectl expose deployment nginx --port 80 --type NodePort
kubectl get services
curl -I localhost:$node_port