K8S在ubuntu上的部署流程

K8S在ubuntu上的部署流程

1.配置:
环境:ubuntu 16.04
节点:
192.168.25.22 master
192.168.25.33 node
2.系统设置(master和node都执行)
1)禁用swap
swapoff -a
2)关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
3)禁用Selinux
apt install selinux-utils
setenforce 0
4)在两个节点的/etc/hosts配置如下
192.168.25.176 slave02
192.168.25.174 master
5)安装docker
apt-get install docker.io -y
6)启动docker服务
systemctl enable docker
systemctl start docker
systemctl status docker
尽量配置docker加速,否则拉取镜像会出现超时。
3.安装kubectl,kubelet,kubeadm( master 和 node 节点都执行)
1)添加秘钥
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
国内网络无法访问谷歌,此时会报无法找到OpenPGP的错误。 点击此链接 https://packages.cloud.google.com/apt/doc/apt-key.gpg (需要电脑可以访问谷歌)获取pgp文件,然后通过apt-key add apt-key.gpg来加载。
下载apt-key.gpg
也可直接用文件夹中的该文件
2)添加Kubernetes软件源
官方的源(如果无法科学上网,添加此源是没有办法安装kubectl、kubeadm、kubectl的):
cat deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
国内的源(此源可以使用,本次搭建使用的是此源):
cat deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF
安装:
apt-get update && apt-get install -y kubelet=1.16.1-00 kubeadm=1.16.1-00 kubectl=1.16.1-00
systemctl enable kubelet
注:安装成功后不要执行systemctl start kubelet,执行是会报错的,直接向下执行就可以了。
4、配置Master
1)在master节点 /etc/profile 下面增加如下环境变量(只在master执行)
export KUBECONFIG=/etc/kubernetes/admin.conf

重起kubelet

systemctl daemon-reload
systemctl restart kubelet
2)在master节点上执行
kubeadm init --kubernetes-version=v1.16.1 --pod-network-cidr 10.244.0.0/16
–pod-network-cidr 指定 Pod 网络的范围。Kubernetes 支持多种网络方案,而且不同网络方案对 --pod-network-cidr 有自己的要求,这里设置为 10.244.0.0/16 是因为我们将使用 flannel 网络方案 –kubernetes-version 通过kubectl version 可以查看到(本次搭建使用的是1.14.1), 报错:
会提示拉取镜像超时,是因为无法访问谷歌。
执行kubeadm config images list,查看所需镜像的版本 根据报错信息,在国内网站站上找到相关的镜像(docker需要配置阿里云的镜像仓库)(镜像拉取,master和node都执行)
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.16.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.16.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.16.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.16.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.15-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.2

把这些镜像重新进行tag
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.16.1 k8s.gcr.io/kube-controller-manager:v1.16.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.16.1 k8s.gcr.io/kube-scheduler:v1.16.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.16.1 k8s.gcr.io/kube-proxy:v1.16.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.16.1 k8s.gcr.io/kube-apiserver:v1.16.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1 k8s.gcr.io/pause:3.1
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.3.15-0 k8s.gcr.io/etcd:3.3.15-0
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2

然后重新执行以下初始化命令(只在master执行):
kubeadm init --kubernetes-version=v1.16.1 --pod-network-cidr 10.244.0.0/16
如果出现一下错误

在/etc/docker下创建daemon.json并编辑:
vim /etc/docker/daemon.json
加入以下内容:
{
“exec-opts”:[“native.cgroupdriver=systemd”]
}
重启docker
systemctl restart docker
再次初始化,出现下图 即表示初始化成功。

初始化成功以后,集群还无法使用,上图红框是需要执行的操作,执行完以后才能使用集群(只在master执行)。
1)执行
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config
2)接下来配置flannel网络,可以到 https://github.com/coreos/flannel 找到图中的这句话 也可以直接执行:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
即可配置flannel网络~~~~
3)查看pod(只能在master执行):
kubectl get pods -n kube-system
所有pod都运行起来了。
k8s至此master节点已经搭建成功!!!!!
注意:单节点部署需要去除主节点的污点,执行如下命令:
kubectl taint nodes --all node-role.kubernetes.io/master-
5.将node节点加入到集群中
注:若是全新的节点想要加入到集群中,需要进行上述node节点执行的操作步骤。
1.生成token(master节点执行) ​ kubeadm token create ​ 2.生成认证(master节点执行)
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed ‘s/^.* //’
3.加入集群(node节点执行)
模板: kubeadm join --token : --discovery-token-ca-cert-hash sha256:
kubeadm join 192.168.25.120:6443 --token mjvnbw.7kh8sg3l44quuk --discovery-token-ca-cert-hash sha256:1e6093b4731be150a6def44eeef2dc855f49aabc0f814441cc0b3202fe49b

node节点加入成功~
6.可能会出现的问题
1)执行kubectl get nodes即可查看节点 如果出现The connection to the server localhost:8080 was refused - did you specify the right host or port?报错,出现这个问题的原因是kubectl命令需要使用kubernetes-admin来运行,解决方法如下,将主节点中的【/etc/kubernetes/admin.conf】文件拷贝到从节点相同目录下,然后配置环境变量:
echo “export KUBECONFIG=/etc/kubernetes/admin.conf” >> ~/.bash_profile
source ~/.bash_profile
再次执行,即可查看节点~~~~
2)coredns没有启动:
解决办法:
可以docker ps -a查看这个容器id,然后通过docker logs 容器id查看日志。
1)
kubectl edit cm coredns -n kube-system
2) 删除loop,保存退出,这个时候稍加等候,这两个容器就自动起来了。 若没有启动,把pod删除,k8s会自动创建。 删除命令:
kubectl delete pod coredns-58b5ccf64b-lkzfv -n kube-system

你可能感兴趣的:(ubuntu,linux,k8s,kubernetes)