03-使用Kubeadm搭建Kubernetes集群
1. 环境说明OS: Ubuntu 18.04Kubernetes: 1.13.2节点信息HostnameIP备注K8S-Master172.28.65.239Master节点K8S-Node1172.28.65.242Node节点1K8S-Node2172.28.65.244Node节点2开始之前,请确保可以科学上网,推荐使用 s...
·
使用Kubeadm搭建Kubernetes集群
1. 环境说明
- OS: Ubuntu 18.04
- Kubernetes: 1.13.2
- 节点信息
Hostname | IP | 备注 |
---|---|---|
K8S-Master | 172.28.65.239 | Master节点 |
K8S-Node1 | 172.28.65.242 | Node节点1 |
K8S-Node2 | 172.28.65.244 | Node节点2 |
- 开始之前,请确保可以科学上网,推荐使用 shadowsocket,并开启 http proxy
2. Master节点安装kubeadm、kubelet和kubectl
2.1 添加kubernets apt源公钥文件
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
2.2 加入kubernetes的官方源
# 新建文件kubernetes.list
vi /etc/apt/sources.list.d/kubernetes.list
#将以下内容加入kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
#更新本地包缓存
apt-get update
2.3 安装工具
apt-get install -y kubelet kubeadm kubectl
安装完成后:
#查看kuberadm 的当前版本
kubeadm version
#查看kubectl 的当前版本
kubectl version
#查看kubelet当前状态
systemctl status kubelet
2.4 非科学上网安装kubeadm、kubelet和kubectl
sudo bash -c 'cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF'
sudo setenforce 0
sudo yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubelet
3. 核心组件镜像下载
下载方式:
- kubeadm 默认从k8s.gcr.io(老版本:gcr.io/google_containers)上下载核心组件镜像
- K8s 1.8之前可以通过KUBE_REPO_PREFIX 指定其他k8s镜像仓库前缀
- 手工将镜像下载到本地主机
这里采用手工下载镜像方式。
3.1 查看其所需镜像
先查看kubeadm版本
kubeadm version
v1.13.2版本,根据查看其所需镜像:
kubeadm config images list --kubernetes-version v1.13.2
3.2 拉取K8S 的包并打 tag(标签)
拉取镜像:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:v1.13.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:v1.13.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:v1.13.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.13.2
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:3.2.24
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.6
给镜像打标签
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler-amd64:v1.13.2 k8s.gcr.io/kube-scheduler:v1.13.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager-amd64:v1.13.2 k8s.gcr.io/kube-controller-manager:v1.13.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver-amd64:v1.13.2 k8s.gcr.io/kube-apiserver:v1.13.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy-amd64:v1.13.2 k8s.gcr.io/kube-proxy:v1.13.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd-amd64:3.2.24 k8s.gcr.io/etcd:3.2.24
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.2.6 k8s.gcr.io/coredns:1.2.6
3.3 初始化
- 关闭Swap
vi /etc/fstab
把最后的swap分区注释掉,然后reboot,让其生效
- 初始化
sudo kubeadm init --kubernetes-version v1.13.2 --apiserver-advertise-address 172.28.65.239 --pod-network-cidr=192.168.0.0/16
root@K8S-Master:~# sudo kubeadm init --kubernetes-version v1.13.2 --pod-network-cidr=192.168.0.0/16
[init] Using Kubernetes version: v1.13.2
[preflight] Running pre-flight checks
......
......
Your Kubernetes master has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join 172.28.65.239:6443 --token 40dup1.urffu06eu0u1hzy3 --discovery-token-ca-cert-hash sha256:9536338df40c12f9287a15d4764fb02041b5e5cd2b0700fddeea32cfbab4cd83
按照提示执行如下操作:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3.4 验证master节点的引导结果
- 设置环境变量
export KUBECONFIG=/etc/kubernetes/admin.conf
- 查看master 运行情况
kubectl get pods -n kube-system -o wide
这种情况考虑是开了系统代理导致,由于可能是全局代理,导致 IP 访问API Server 也是不通的,通常建议此时关闭系统代理,仅仅开启 Docker 代理就足够应付接下来的安装。
while read var; do unset $var; done < <(env | grep -i proxy | awk -F= '{print $1}')
再执行
kubectl get pods -n kube-system -o wide
如果在执行kubeadm init出现错误,要重新执行kubeadm init,需要首先执行kubeadm reset
3.5 安装集群网络插件
这里选择安装 Weave Net。
下载weave.yaml到本地:
curl -L "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" > weave.yaml
vi weave.yaml
在容器weave下添加环境变量
- name : IPALLOC_RANGE
value: 192.168.16.0/20
执行:
kubectl apply -f weave.yaml
验证网络插件的结果:
kubectl get pods -n kube-system -o wide
4. 向集群加入node节点
两台node节点先安装好:
- 安装docker-ce
- kubeadm、kubelet和kubectl,参照第2节
- 下载所需镜像,参照3.1-3.2小节
node节点加入集群,分别在两个节点上执行:
kubeadm join 172.28.65.239:6443 --token 40dup1.urffu06eu0u1hzy3 --discovery-token-ca-cert-hash sha256:9536338df40c12f9287a15d4764fb02041b5e5cd2b0700fddeea32cfbab4cd83
这段执行语句在3.3小节初始化master节点成功后会打印出来。
可在master节点上查看集群情况:
kubectl get nodes
集群删除节点k8s-node1,在master上执行:
kubectl delete node k8s-node1
在k8s-node1节点上执行:
kubeadm reset
5. 配置命令行交互环境
配置在k8s-node1节点上管理集群:
- 分发 /etc/kubernetes/ admin.conf:将master节点下的该文件复制到k8s-node1节点的对应目录;
- 设置环境变量KUBECONFIG:
# vi ~/.bashrc 添加如下代码
export KUBECONFIG='/etc/kubernetes/admin.conf'
# 使shell配置文件生效
source ~/.bashrc
- 检查配置结果:在k8s-node1上执行
kubectl get nodes
更多推荐
已为社区贡献7条内容
所有评论(0)