1. 停止防火墙
# systemctl disable firewalld
# systemctl stop firewalld
2. 禁用SELinux,让容器可以读取主机文件系统
# setenforce 0 临时办法,重启后失效
修改/etc/sysconfig/selinux 将SELINUX=enforcing改为SELINUX=disabled,永久办法,重启后有效
3. 禁用交换
# swapoff -a 临时办法,重启后无效
# vim /etc/fstab
注释掉 /dev/mapper/centos-swap swap,重启后有效
4. 安装docker
a. 安装相关package
# yum install yum-utils device-mapper-persistent-data lvm2
b. 添加docker仓库
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
c. 安装docker-ce
# yum update && yum install docker-ce-18.06.2.ce
d. 创建文件夹
# mkdir /etc/docker
e. 配置国内镜像,提供加速功能,修改cgroup driver为systemd
# vim /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
f. 将docker设为开机启动,启动docker
# systemctl enable docker&& systemctl restart docker
g. 查看docker状态,应该为running
# systemctl status docker
5. 配置yum源,否则下载不到kubernetes工具
# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes Repository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
6. 安装kubeadm,kubectl,kubelet
# yum install -y kubelet-1.14.0-0 kubeadm-1.14.0-0 kubectl-1.14.0-0 --disableexcludes=kubernete
7. 取得默认初始化参数文件
# kubeadm config print init-defaults > init.default.yaml
# vim init.default.yaml
找到对应配置,修改为以下内容
imageRepository: docker.io/dustise
networking:
podSubnet: "192.168.0.0/16"
localAPIEndpoint:
advertiseAddress: 你的主机IP
bindPort: 6443
# mv init.default.yaml init-config.yaml
8. 处理一些环境配置问题
# vim bridge-nf-call-iptables
输入1,保存
# cp bridge-nf-call-iptables /proc/sys/net/bridge/
选y覆盖文件
确保虚拟机有分配最少2个核心,如果只有1个,会报Warning
9. 安装master
下载相应的docker镜像
# kubeadm config images pull --config=init-config.yaml
# kubeadm init --config=init-config.yaml
看到Your Kubernetes control-plane has initialized successfully!,操作成功
10. 执行以下动作
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
11. 验证配置
# kubectl get -n kube-system configmap
12. 安装网络插件
选择你想要安装的插件进行安装
比如weave
# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
master安装成功
安装Node
1. 安装kubeadm和kubelet
# yum install -y kubelet-1.14.0-0 kubeadm-1.14.0-0 --disableexcludes=kubernete
2. 创建文件join-config.yaml
apiVersion: kubeadm.k8s.io/v1beta1
kind: JoinConfiguration
discovery:
bootstrapToken:
apiServerEndpoint: 上一步建立的masterIP地址:6443
token: abcdef.0123456789abcdef 上一步初始化master最后的一行信息
unsafeSkipCAVerification: true
tlsBootstrapToken: abcdef.0123456789abcdef
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: node1
3. 在master和node机器上为join-config.yaml中的name:node1配置hosts
# vim /etc/hosts
你的node节点IP node1
3. 按照上一步配置docker,修改cgroup driver为systemd,重启docker
# vim /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
# systemctl enable docker && systemctl restart docker
4. 加入node
# kubeadm join --config=join-config.yaml
node安装完成
验证kubernetes集群是否安装完成
# kubectl get pods --all-namespaces
看到pods都为 Running,表示集群安装成功
# kubectl get nodes
看到下图,说明node安装成功
问题说明:
1. pod不断重启
如果kubectl get pods --all-namespaces显示有的pods没有启动,或者不断重启,说明虚拟机资源耗尽,用top命令查看资源使用率,调大内存或者磁盘空间,我用了8G内存,启动正常