使用kubeadm在Centos8上部署kubernetes1.19

Master节点部署:

1、环境准备

#查看系统版本

[root@k8s-master ~]# cat /etc/redhat-release 
CentOS Linux release 8.2.2004 (Core)

#关闭防火墙,swap分区,selinux

systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
iptables -P FORWARD ACCEPT
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

#配置yum源,安装常用包

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
yum install -y expect wget vim bash-completion net-tools gcc

#配置内核参数

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

2、使用ailiyun安装docker-ce

wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce

#添加aliyundocker仓库加速器

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": ["https://acfoeo46.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

3、安装kubectl、kubelet、kubeadm

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
yum install -y kubectl kubelet kubeadm
systemctl enable kubelet

4、初始化k8s集群

#POD的网段为: 10.122.0.0/16, api server地址就是master本机IP。 #这一步很关键,由于kubeadm 默认从官网k8s.grc.io下载所需镜像,国内无法访问,因此需要通过–image-repository指定阿里云镜像仓库地址。

kubeadm init --kubernetes-version=1.19.3  \
--apiserver-advertise-address=10.0.0.19   \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
#根据提示创建kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
source <(kubectl completion bash)

#查看节点,pod

[root@k8s-master ~]# kubectl get node
NAME         STATUS   ROLES   AGE   VERSION
k8s-master   Ready   master   4m1s   v1.19.2
[root@k8s-master ~]# kubectl get pod --all-namespaces
NAMESPACE     NAME                                 READY   STATUS   RESTARTS   AGE
kube-system   coredns-6d56c8448f-5n4c2             1/1     Running   0         3m54s
kube-system   coredns-6d56c8448f-t2ll7             1/1     Running   0         3m54s
kube-system   etcd-k8s-master                      1/1     Running   0         4m12s
kube-system   kube-apiserver-k8s-master            1/1     Running   0         4m12s
kube-system   kube-controller-manager-k8s-master   1/1     Running   0         4m12s
kube-system   kube-proxy-dhnfz                     1/1     Running   0         3m54s
kube-system   kube-scheduler-k8s-master            1/1     Running   0         4m12s

5、安装calico网络

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

#查看节点,pod

[root@k8s-master ~]# kubectl get node
NAME         STATUS   ROLES   AGE     VERSION
k8s-master   Ready   master   7m26s   v1.19.2
[root@k8s-master ~]# kubectl get pod --all-namespaces
NAMESPACE     NAME                                     READY   STATUS             RESTARTS   AGE
kube-system   calico-kube-controllers-c9784d67d-xqcrq   0/1     ContainerCreating   0         42s
kube-system   calico-node-mddxk                         0/1     Init:0/3           0         42s
kube-system   coredns-6d56c8448f-5n4c2                 1/1     Running             0         7m6s
kube-system   coredns-6d56c8448f-t2ll7                 1/1     Running             0         7m6s
kube-system   etcd-k8s-master                           1/1     Running             0         7m24s
kube-system   kube-apiserver-k8s-master                 1/1     Running             0         7m24s
kube-system   kube-controller-manager-k8s-master       1/1     Running             0         7m24s
kube-system   kube-proxy-dhnfz                         1/1     Running             0         7m6s
kube-system   kube-scheduler-k8s-master                 1/1     Running             0         7m24s

6、安装kubernetes-dashboard

#官方部署dashboard的服务没使用nodeport,将yaml文件下载到本地,在service里添加nodeport

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc7/aio/deploy/recommended.yaml

[root@master01 ~]# vim recommended.yaml

kind: Service

apiVersion: v1

metadata:

labels:

  k8s-app: kubernetes-dashboard

  name: kubernetes-dashboard

  namespace: kubernetes-dashboard

spec:

  type: NodePort

  ports:

     -port: 443

    targetPort: 8443

    nodePort: 30000

     selector:

     k8s-app: kubernetes-dashboard

#生成dashboard的容器

kubectl create -f recommended.yaml

#创建dashboard账户

kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --user=system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard

#通过页面访问

 

 

#使用token进行登录,执行下面命令获取token

kubectl describe secrets -n kubernetes-dashboard|tail -1|awk '{print $2}'

#查看dashboard

 

 

Node节点部署:

7、添加node节点

同上master的1、2、3步

#master和node添加hosts

cat >>/etc/hosts<<EOF
10.0.0.19 k8s-master
10.0.0.100 k8s-node1
EOF

#初始化node节点

kubeadm join 10.0.0.21:6443 --token jlglyn.txqytt20547qpmxk \
   --discovery-token-ca-cert-hash sha256:91005c1479334955b7d3e03ae6909761e5096c660f7c17bddcc1a866f4096a9a
echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> ~/.bash_profile
source ~/.bash_profile

8、测试k8s集群:

#在k8s机器中创建一个pod,验证是否运行正常:

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pods kubectl get svc

附录知识点:

kubeadm init引导过程: 1、检查系统环境是否满足,例如swap是否关闭,配置是否满足 2、下载所需镜像kubeadm config images pull 3、为kubelet创建配置文件并启动 4、为apiserver、etcd生成https证书 5、生成连接apiserver的kubeconfig文件 6、容器启动master组件 7、将涉及的配置文件存储到configmap中 8、设置master节点不可调度 9、启用bootstrap自动颁发证书 10、安装插件:coredns、kube-proxy 最后一步,提示你拷贝连接k8s集群的配置文件

k8s日志:会放入系统日志/var/log/messages

安装目录:/etc/kubernetes/

证书目录:/etc/kubernetes/pki/

默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:

方法一:

kubeadm create
kubeadm token list
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'

然后用获取的值拼接命令:

kubeadm join 10.0.0.21:6443 --token jlglyn.txqytt20547qpmxk  --discovery-token-ca-cert-hash sha256:91005c1479334955b7d3e03ae6909761e5096c660f7c17bddcc1a866f4096a9a 

方法二:在msater节点输入下面命令,获得node节点加入集群的命令

kubeadm token create --print-join-command

posted @ 2020-09-22 17:03  陶清刚  阅读(205)  评论(0)    收藏  举报