使用kubeadm方式安装K8S

Kubeadm安装

kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每一个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践作调整,经过实验kubeadm能够学习到Kubernetes官方在集群配置上一些新的最佳实践。node

安装Docker ce

Docker安装
每一个机器都须要装linux

环境准备

编辑hosts对应关系
cat <<EOF >>/etc/hosts
192.168.37.61 Smile1
192.168.37.62 Smile2
192.168.37.63 Smile3
EOF
关闭防火墙
systemctl stop firewalld.service  
systemctl disable firewalld.service
禁用SELINUX
sudo setenforce 0
sed -i "s/^SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
关闭swap
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
配置内核参数添加以下内容

cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOFgit

配置K8S的yum源

cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl= http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey= http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
github

安装kubelet、kubeadm、kubectl

yum makecache fast
yum install -y kubelet kubeadm kubectl

调整启动方式

kubelet的启动环境变量要与docker的cgroup-driver驱动同样docker

docker info | grep -i cgroup
Cgroup Driver: cgroupfs  --> 运行命令显示

docker的cgroup-driver是cgroupfs,而k8s默认是systemd
修改docker的cgroup-driverjson

vim /etc/docker/daemon.json
加入内容 : { "exec-opts": ["native.cgroupdriver=systemd"] }
最终文件内容

{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}vim

重启Docker
systemctl restart docker
systemctl status docker

启动kubelet服务

systemctl enable kubelet.service
systemctl start kubelet.service

配置Master节点

进行kubernetes集群初始化

Master节点执行命令 :
kubeadm init --kubernetes-version=1.15.0  
--apiserver-advertise-address=192.168.37.61  
--image-repository=gcr.azk8s.cn/google_containers  
--pod-network-cidr=10.244.0.0/16 --token-ttl 0api

--kubernetes-version : 指定版本号
--apiserver-advertise-address : 指定主机地址
其中设置image-repository这一步很重要,kubeadm默认从官网k8s.grc.io下载所需镜像,国内没法访问,所以须要指定阿里云或者是其余国内镜像仓库地址。网络

定义POD的网段为: 10.244.0.0/16,app

初始化成功后会返回以下信息
//这个返回信息三条命令是配置kubectl工具的命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

// 这个返回信息是配置Node节点的命令
kubeadm join 192.168.98.230:6443 --token dexs09.ftjp7y7obq6a3t6n \
      --discovery-token-ca-cert-hash sha256:4aace846f8a6c381902592049591152fd7250b63e500e370a4b64902d202f7f2
配置kubectl工具

运行初始化成功后返回的三条命令

部署pod的网络

有不少种选择参考
咱们选择的是flannel,其它的几种可能会有问题

wget https://raw.githubusercontent.com/coreos/flannel/a70459be0084506e4ec919aa1c114638878db11b/Documentation/kube-flannel.yml

//在kube-flannel.yml里面默认的镜像下载地址是quay.io,国内没法访问,这里替换全部的quay.io为 quay-mirror.qiniu.com
sed -i "s/quay.io/quay-mirror.qiniu.com/g" kube-flannel.yml
执行安装命令
kubectl apply -f kube-flannel.yml
查看运行状态
kubectl get pod --all-namespaces -o wide

确保全部的pod都处在运行状态

部署Node节点

将全部的node节点加入到kubernets集群

//在Node节点上执行(这个命令就是集群初始化以后的返回信息)
kubeadm join 192.168.98.230:6443 --token dexs09.ftjp7y7obq6a3t6n \
          --discovery-token-ca-cert-hash sha256:4aace846f8a6c381902592049591152fd7250b63e500e370a4b64902d202f7f2

最后检测集群各节点的运行状态

kubectl get nodes

再次查看各个pod的状态,确保都是处于Runing状态

kubectl get pod --all-namespaces -o wide

若是有问题,从新配置Master

kubeadm reset

我天天会写文章记录云计算技术学习之路,另外我本身整理了些云计算的学习资料,目前所有放在个人公众号"SmallBird技术分享",加入咱们一块儿学习交流,而且回复’分享’会有大数据,云计算资源惊喜等着你~

相关文章
相关标签/搜索