centos安装kubernetes
环境系统:centos7docker版本:docker-ce-19.03.8-3.el7,docker安装见centos安装dockerk8s安装方式:kubeadmkubelet、kubeadm、kubectl版本:kubelet-1.18.5、kubeadm-1.18.5、kubectl-1.18.5k8s相关镜像版本:通过kubeadm config images list查看相关镜像的版本
环境
-
系统:
centos7
-
docker
版本:docker-ce-19.03.8-3.el7
,docker安装见centos安装docker -
k8s
安装方式:kubeadm
-
kubelet、kubeadm、kubectl
版本:kubelet-1.18.5、kubeadm-1.18.5、kubectl-1.18.5
-
k8s
相关镜像版本:通过kubeadm config images list
查看相关镜像的版本k8s.gcr.io/kube-apiserver:v1.18.15 k8s.gcr.io/kube-controller-manager:v1.18.15 k8s.gcr.io/kube-scheduler:v1.18.15 k8s.gcr.io/kube-proxy:v1.18.15 k8s.gcr.io/pause:3.2 k8s.gcr.io/etcd:3.4.3-0 k8s.gcr.io/coredns:1.6.7
-
安装配套
wave
镜像:kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
安装步骤
卸载旧版本kubelet、kubeadm、kubectl
yum list installed | grep kubectl
yum list installed | grep kubeadm
yum list installed | grep kubelet
yum remove -y kubelet kubeadm kubectl
kubeadm reset -f
modprobe -r ipip
lsmod
rm -rf ~/.kube/
rm -rf /etc/kubernetes/
rm -rf /etc/systemd/system/kubelet.service.d
rm -rf /etc/systemd/system/kubelet.service
rm -rf /usr/bin/kube*
rm -rf /etc/cni
rm -rf /opt/cni
rm -rf /var/lib/etcd
rm -rf /var/etcd
配置kubernetes镜像地址
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
安装kubelet、kubeadm、kubectl
yum install -y kubelet-1.18.5 kubeadm-1.18.5 kubectl-1.18.5 --disableexcludes=kubernetes
拉取和部署kubernetes其他模块镜像
-
查看安装的
kubeadm-1.18.5
需要哪些镜像和镜像版本kubeadm config images list
-
拉取镜像
上面查找的镜像,k8s.gcr.io
是下载不到的,所以要换一个镜像地址,下面是用阿里的镜像地址# docker pull k8s.gcr.io/kube-apiserver:v1.18.15 # docker pull k8s.gcr.io/kube-controller-manager:v1.18.15 # docker pull k8s.gcr.io/kube-scheduler:v1.18.15 # docker pull k8s.gcr.io/kube-proxy:v1.18.15 # docker pull k8s.gcr.io/pause:3.2 # docker pull k8s.gcr.io/etcd:3.4.3-0 # docker pull k8s.gcr.io/coredns:1.6.7 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.15 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.15 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.15 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.15 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7
-
为镜像添加新的
tag
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.18.15 k8s.gcr.io/kube-apiserver:v1.18.15 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.18.15 k8s.gcr.io/kube-controller-manager:v1.18.15 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.18.15 k8s.gcr.io/kube-scheduler:v1.18.15 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.15 k8s.gcr.io/kube-proxy:v1.18.15 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2 k8s.gcr.io/pause:3.2 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0 docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.7 k8s.gcr.io/coredns:1.6.7
初始化kubernetes集群
执行命令,打印的日志出现如下图所示,表示初始化成功
kubeadm init --kubernetes-version=v1.18.15
配置kubectl访问集群的配置
上一步骤输出的内容提示要执行下面的命令,然后就可以用kubectl
访问k8s
了
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
coredns
两个pod
的status
一直是Pending
,因为还没有部署上面提到的wave
部署wave
执行下面的代码,部署Weave,等这个pod
启动成功后,发现coredns
容器也ok
了
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
执行单机集群的命令
kubectl taint nodes --all node-role.kubernetes.io/master-
安装结束
安装结束,此时可以在服务器通过kubectl
访问k8s
,但是其他服务器或者windows
的kubectl
是无法访问到k8s
的,因为k8s
默认只会在内网使用。
kubectl远程访问k8s
配置kubectl访问集群的配置
的步骤中,执行的脚本拷贝了k8s
生成的密钥信息,$HOME/.kube/config
文件,所以kubectl
可以访问到kube-apiserver
,下面重新生成密钥信息,使外网的kubectl
可以访问kube-apiserver
-
cd /etc/kubernetes/pki
此文件路径下,都是k8s
的配置,是kubeadm
生成的,其中我们重新生成apiserver.crt
和apiserver.key
-
导出集群正在使用的配置
kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm.yaml
-
vi kubeadm.yaml
编辑导出的配置文件,添加服务器ip
,圈住的是我添加的,其他信息都是已有
-
移除旧的证书
mv /etc/kubernetes/pki/apiserver.{crt,key} ~
-
生成新的证书
kubeadm init phase certs apiserver --config kubeadm.yaml
-
杀掉
kube-apiserver
容器,k8s
自动重启docker kill $(docker ps | grep kube-apiserver | grep -v pause | awk '{print $1}')
-
加载修改后的
kubeadm.yaml
kubeadm config upload from-file --config kubeadm.yaml
-
将
$HOME/.kube/config
拷贝到windows
或者其他服务器上,修改其中的server
配置为k8s
的外网IP
。圈住的地方,改为k8s
服务器的外网地址。(windows
安装kubectl
详见windows配置kubectl访问k8s集群)
更多推荐
所有评论(0)