概述
kubernetes部署-基于vmware+centos7虚拟机3个节点
- 零、部署前请先下载vmware以及centos7系统文件
- 一、部署简述
- 二、部署前准备工作
- 解除防火墙限制
- 禁用swap
- 更改SELinux模式
- 三、通过yum安装相关组件
- 启动docker
- 配置docker源
- 四、部署Master节点
- 初始化master节点组件
- 创建.kube以及config文件
- 启动kubelet
- 配置并使用kubectl
- 五、部署其他Master节点或者Slave节点
- 加入worker节点
- 创建.kube以及config文件
- 部署新的master节点
- 六、部署CNI
- 七、配置master节点也可以部署pod
- 八、部署失败的处理
转载请注明出处即可
所使用的环境为macos
零、部署前请先下载vmware以及centos7系统文件
vmware官网
centos7官网
安装vmware和centos7的请自行查询百度,
在安装时,请注意系统的时区和网络配置即可。
一、部署简述
通过vmware安装一个虚拟机,并copy两份,分别固定ip地址(重要), 以及配置host(重要)。
ip | host | node role |
---|---|---|
192.168.179.137 | ceph1 | master |
192.168.179.138 | ceph2 | master |
192.168.179.139 | ceph3 | master |
配置host通过编辑hostnane文件
vim /etc/hostname
windows的vmware固定ip在虚拟机的配置界面设置一下即可
macos的vmware固定ip请自行查询百度
二、部署前准备工作
解除防火墙限制
systemctl stop firewalld && systemctl disable firewalld
systemctl stop iptables && systemctl disable iptables
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
然后
sysctl -p
禁用swap
swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab
更改SELinux模式
将SELinux更改为permissive模式
setenforce 0
永久关闭SELinux
编辑/etc/selinux/config
SELINUX=disabled
三、通过yum安装相关组件
centos使用阿里云的源
cat <<EOF > /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
然后
yum install -y docker kubelet kubeadm kubectl kubernetes-cni
启动docker
systemctl enable docker && systemctl start docker
配置docker源
编辑/etc/docker/daemon.json文件:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
之后重新加载配置并重启docker:
systemctl daemon-reload
systemctl restart docker
四、部署Master节点
master启动的核心服务如下:
master节点 |
---|
etcd-master |
kube-apiserver |
kube-controller-manager |
kube-dns |
Controll Plane (如calico、flannel) |
kube-proxy |
kube-scheduler |
####下载master节点的服务镜像
使用如下命令获取当前版本kubadm启动需要的镜像:
kubeadm config images list
得到
k8s.gcr.io/kube-apiserver:v1.17.4
k8s.gcr.io/kube-controller-manager:v1.17.4
k8s.gcr.io/kube-scheduler:v1.17.4
k8s.gcr.io/kube-proxy:v1.17.4
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.2
由于国内的网络环境,需要使用aliyun镜像替换谷歌镜像,脚本如下:
注意,一定要和images list的版本保持一致,当然版本可能是要比1.17.4要新
#!/bin/bash
images=(
kube-apiserver:v1.17.4
kube-controller-manager:v1.17.4
kube-scheduler:v1.17.4
kube-proxy:v1.17.4
pause:3.1
etcd:3.4.3-0
coredns:1.6.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
done
然后运行脚本下载这些docker镜像。
初始化master节点组件
kubeadm init --kubernetes-version v1.17.4
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
--pod-network-cidr=10.244.0.0/16
--apiserver-advertise-address=192.168.179.137
--upload-certs -—control-plane-endpoint=192.168.179.137:6443
如果后面打算选择flannel的话,请将–pod-network-cidr=10.244.0.0/16一定加上,因为flannel默认也是相同的配置。
完成之后会输出两个kubeadm join 行
一个是用于其他master节点加入集群
kubeadm join 192.168.179.137:6443 --token 1234567890qwertyuio
--discovery-token-ca-cert-hash sha256:1234567890qwertyuio
--control-plane --certificate-key 1234567890qwertyuio
另一个是用于worker节点接入集群
kubeadm join 192.168.179.137:6443 --token 1234567890qwertyuio
--discovery-token-ca-cert-hash sha256: 1234567890qwertyuio
copy与上面两行类似的指令,并保存,用于后面使用。也可以看到如果包含了–control-plane则是master节点加入集群
创建.kube以及config文件
mkdir ~/.kube
cp /etc/kubernetes/admin.conf ~/.kube/config
启动kubelet
systemctl enable kubelet && systemctl start kubelet
配置并使用kubectl
使用kubectl查看当前运行的节点:
kubectl get nodes
输出
NAME STATUS ROLES AGE VERSION
ceph1 NotReady master 1h v1.17.4
查看当前运行的pods:
kubectl get pods --all-namespaces
输出
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-7f9c544f75-8qk6v 0/1 Pending 0 17h
kube-system coredns-7f9c544f75-p8tcj 0/1 Pending 0 17h
kube-system etcd-ceph1 1/1 Running 0 17h
kube-system kube-apiserver-ceph1 1/1 Running 0 17h
kube-system kube-controller-manager-ceph1 1/1 Running 0 17h
kube-system kube-proxy-2vkrs 1/1 Running 0 17h
kube-system kube-scheduler-ceph1 1/1 Running 0 17h
五、部署其他Master节点或者Slave节点
worker启动的核心服务如下:
worker节点 |
---|
Controll Plane (如calico、flannel) |
kube-proxy |
other apps |
加入worker节点
在worker节点上运行刚刚在master节点运行的kubeadm init
的输出:
kubeadm join 192.168.179.137:6443 --token 1234567890qwertyuio
--discovery-token-ca-cert-hash sha256: 1234567890qwertyuio
将当前worker节点加入集群。
之后会自动启动worker节点的kubelet服务。这时在master节点上查看集群内所有节点,会输出
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ceph1 NotReady master 1h v1.17.4
ceph2 NotReady <none> 9s v1.17.4
创建.kube以及config文件
mkdir ~/.kube
scp ceph1:/root/.kube/config ~/.kube/
部署新的master节点
如果在部署一个master节点的话,执行上面带有 --control-plane 的join指令
查看ndoes
NAME STATUS ROLES AGE VERSION
ceph1 NotReady master 1h v1.17.4
ceph2 NotReady master 9s v1.17.4
六、部署CNI
在master节点上运行kubectl get nodes
会看到
NAME STATUS ROLES AGE VERSION
ceph1 NotReady master 17h v1.17.4
ceph2 NotReady master 9s v1.17.4
ceph3 NotReady master 9s v1.17.4
master和worker节点(如果有)都是NotReady的,这时运行kubectl get pods -n kube-system -o wide
会看到两个coredns都是Pending的。
这个时候需要安装flannel或者weave。这两个网络组件只需要安装其中一个即可
安装flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
安装weave
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d 'n')"
安装后可以看到所有的服务组件都是Running的
# kubectl -n kube-system get pods
NAME READY STATUS RESTARTS AGE
coredns-7f9c544f75-8qk6v 1/1 Running 5 40d
coredns-7f9c544f75-p8tcj 1/1 Running 5 40d
etcd-ceph1 1/1 Running 5 40d
etcd-ceph2 1/1 Running 7 40d
etcd-ceph3 1/1 Running 5 40d
kube-apiserver-ceph1 1/1 Running 7 40d
kube-apiserver-ceph2 1/1 Running 7 40d
kube-apiserver-ceph3 1/1 Running 7 40d
kube-controller-manager-ceph1 1/1 Running 21 40d
kube-controller-manager-ceph2 1/1 Running 17 40d
kube-controller-manager-ceph3 1/1 Running 20 40d
kube-proxy-2vkrs 1/1 Running 7 40d
kube-proxy-8z8gk 1/1 Running 6 40d
kube-proxy-x6cm4 1/1 Running 5 40d
kube-scheduler-ceph1 1/1 Running 14 40d
kube-scheduler-ceph2 1/1 Running 19 40d
kube-scheduler-ceph3 1/1 Running 22 40d
weave-net-4khvl 2/2 Running 14 40d
weave-net-6h4c4 2/2 Running 20 40d
weave-net-pp8kv 2/2 Running 14 40d
并且所有的节点都是Ready的
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
ceph1 Ready master 40d v1.17.4
ceph2 Ready master 40d v1.17.4
ceph3 Ready master 40d v1.17.4
七、配置master节点也可以部署pod
kubectl taint nodes --all node-role.kubernetes.io/master-
八、部署失败的处理
一般情况下只要根据上述步骤,第一个master节点部署是不会失败的
如果在join过程中失败, 在重新部署之前,需要执行下面的指令
rm -rf /var/lib/etcd
rm -rf /etc/kubernetes/
rm -rf /etc/cni/net.d
swapoff -a
kubeadm reset
systemctl daemon-reload
systemctl restart kubelet
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
最后
以上就是纯真帅哥为你收集整理的kubernetes部署-基于vmware+centos7虚拟机3个节点零、部署前请先下载vmware以及centos7系统文件一、部署简述二、部署前准备工作三、通过yum安装相关组件四、部署Master节点五、部署其他Master节点或者Slave节点六、部署CNI七、配置master节点也可以部署pod八、部署失败的处理的全部内容,希望文章能够帮你解决kubernetes部署-基于vmware+centos7虚拟机3个节点零、部署前请先下载vmware以及centos7系统文件一、部署简述二、部署前准备工作三、通过yum安装相关组件四、部署Master节点五、部署其他Master节点或者Slave节点六、部署CNI七、配置master节点也可以部署pod八、部署失败的处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复