我是靠谱客的博主 缥缈大地,最近开发中收集的这篇文章主要介绍使用kubeadm安装部署k8s规划准备工作配置yum仓库拉取镜像结点的初始化与集群的横向扩展采坑记录小结,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
使用kubeadm安装部署k8s
- 规划
- 准备工作
- 主机名称解析
- 时间同步
- 关闭所有节点的iptables和firewalld以及selinux
- 内核配置
- 配置yum仓库
- 配置docker仓库
- 配置k8s仓库
- 安装相关组件
- 拉取镜像
- 结点的初始化与集群的横向扩展
- 初始化master节点
- 添加一个新的节点到集群
- 采坑记录
- 小结
规划
预计使用三个节点来完成k8s的初次体验工作。结点规划如下表所示。
IP | 节点角色 | 工作职责 |
---|---|---|
192.168.217.129 | master | 对外暴露API,对内提供工作流的调度和配置 |
192.168.217.130 | node1 | 承载着k8s运行的实际任务 |
192.168.217.131 | node2 | 同node1相同 |
准备工作
主机名称解析
(在/etc/hosts文件编辑相关信息即可)
# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
master 192.168.217.129
node1 192.168.217.130
node2 192.168.217.131
# master,node1,node2等节点的ip应按照自己的实际情况来填写。
将上述配置文件拷贝到集群中的所有节点,包括master节点和node节点。
时间同步
(使用chrony服务实现)
各个节点的操作如下:
yum -y install chrony
vim /etc/chrony.conf
~~~
server master
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
~~~~
#注释掉原有的server内容,把原有的时钟同步服务设置为master结点上的时钟同步。
关闭所有节点的iptables和firewalld以及selinux
iptables -F
systemctl stop firewalld
systemctl disable firewalld
内核配置
# 开启路由转发功能以及iptables的过滤策略。
cat <<EOF > /etc/sysctl.d/k8s.conf
#开启iptables中ipv6的过滤规则
net.bridge.bridge-nf-call-ip6tables = 1
#开启ipv4的过滤规则
net.bridge.bridge-nf-call-iptables = 1
#开启服务器的路由转发功能
net.ipv4.ip_forward = 1
EOF
# 执行命令使修改生效。
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
配置yum仓库
所有节点都要配仓库
配置docker仓库
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --disable docker-ce-edge
yum-config-manager --disable docker-ce-test
# Step 3: 更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# Step 5: 更改cgroup driver为systemd,并且为docker添加镜像加速。
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["****此处替换为自己的镜像加速地址****"]
}
EOF
systemctl daemon-reload
systemctl restart kubelet
配置k8s仓库
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
setenforce 0
安装相关组件
各个结点上都安装相关组件
#查看所有的kublet版本,选择适合自己的版本。
yum list kubelet --showduplicates | sort -r
#安装相关版本的组件
yum -y install kubeadm-1.13.0-0 kubelet-1.13.0-0 kubectl-1.13.0-0 kubernetes-cni-0.6.0-0
#所有服务都设置为开机自启动
systemctl enable kubelet
上面的步骤有个坑,就是如果不指定kubernetes-cni的版本的话,默认会用更高的版本,然后就会导致yum安装失败,存在有依赖关系
拉取镜像
某些镜像是在google的网站上才能下载的,大多数时候我们访问不到,鉴于此,需要提前把镜像下载下来。
下面是一个通用的镜像下载脚本。
cat ./pull.sh
for i in `kubeadm config images list`; do
imageName=${i#k8s.gcr.io/}
docker pull registry.aliyuncs.com/google_containers/$imageName
docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.aliyuncs.com/google_containers/$imageName
done;
结点的初始化与集群的横向扩展
初始化master节点
kubeadm init --kubernetes-version=v1.12.1 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.217.129
#--kubernetes-version指明要下载的镜像版本
#--pod-network-cidr 指明网络的子网掩码,此处使用flannel模型的子网掩码
#--apiserver-advertise-address 指明与master结点绑定的ip
保存初始化后的那段话,将来新加入结点或者做别的操作的时候,可能会用到相关内容。
取消污点
kubectl taint nodes --all node-role.kubernetes.io/master-
配置命令补全功能
echo "source <(kubectl completion bash)" >> ~/.bashrc
配置flannel网络功能
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 下载flannel的yaml文件
kubectl apply -f kube-flannel.yml
# 执行这个文件生成flannel的pods
安装dashboard
#Create a new ServiceAccount
kubectl create serviceaccount k8sadmin -n kube-system
#Create a ClusterRoleBinding with Cluster Admin Privileges
kubectl create clusterrolebinding k8sadmin --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin
#Get the token
kubectl get secret -n kube-system | grep k8sadmin | cut -d " " -f1 | xargs -n 1 | xargs kubectl get secret -o 'jsonpath={.data.token}' -n kube-system | base64 --decode
# 安装dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
这个token可以用来后面登陆使用。
添加一个新的节点到集群
执行加入节点的命令,这条命令来自于,执行kubeadm输出之后的内容。
kubeadm join 192.168.217.129:6443 --token vtqzkt.j0u1chomafn1offd --discovery-token-ca-cert-hash sha256:c25549dc8457677752b8d1b0547acfa8be742cbd5734802b6d2e3e9a6e7e1b73
采坑记录
1.指定版本之后,需要指明CNI的版本
yum -y install kubeadm-1.13.0-0 kubelet-1.13.0-0 kubectl-1.13.0-0 kubernetes-cni-0.6.0-0
2.出现failed 访问10.96.0.1之后,意味着,可能需要配置默认路由。
小结
尚有两个问题没有解决。
- 1.目前的集群中使用的是iptables进行负载均衡,实际上可以使用性能更好的ipvs,有待后面研究。
- 2.集群中现在的网络是flannel,后面考虑如何平稳的过渡为calico网络模型。
最后
以上就是缥缈大地为你收集整理的使用kubeadm安装部署k8s规划准备工作配置yum仓库拉取镜像结点的初始化与集群的横向扩展采坑记录小结的全部内容,希望文章能够帮你解决使用kubeadm安装部署k8s规划准备工作配置yum仓库拉取镜像结点的初始化与集群的横向扩展采坑记录小结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复