Ubuntu 20 kubernetesv1.23.6 集群安装配置2022-05-03

kubernetes 安装配置
确定能成功的基于ubuntu服务器的kubernetes的安装步骤,使用了kubeadm,
--环境
Ubuntu 20 虚拟机
Kubernetes 1.23.6
腾讯云虚拟机

操作步骤
-- 一、ubuntu环境设置
所有主机都需要操作
1、修改root密码
sudo passwd root
2、修改sshd配置允许root远程登录

sudo vim /etc/ssh/sshd_config
PermitRootLogin yes # 添加

3、重启sshd服务使配置生效
sudo systemctl restart sshd.service

4、设置主机名和修改hosts文件:这里仅作为参考
sudo hostnamectl set-hostname master01

vi /etc/hosts

127.0.0.1 localhost
#127.0.1.1 master01

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

172.17.0.8  master01 #这里根据自己实际主机IP修改 
172.16.106.39 node01 #这里根据自己实际节点IP修改 
172.16.106.50 node02
172.16.106.51 master02

5、禁用 swap
所有主机都需要操作
swapoff -a && sed -i '/swap/d' /etc/fstab

  1. 关闭防火墙或者开放端口(测试环境直接关闭了防火墙)
    所有主机都需要操作
    sudo ufw disable # ubuntu

7、修改配置
所有主机都需要操作

# Enable kernel modules
sudo modprobe overlay && \
sudo modprobe br_netfilter
# Add some settings to sysctl
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

Reload sysctl

sudo sysctl --system

二、安装DOCKER
所有主机都需要操作

sudo apt update && \
sudo apt install apt-transport-https ca-certificates curl software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" && \
apt-cache policy docker-ce && \
sudo apt install -y containerd.io docker-ce docker-ce-cli && \
sudo systemctl status docker

三、安装K8S(阿里源版本)
1、设置为阿里源

sudo apt update && \
sudo apt -y install curl apt-transport-https  
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -  
echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee   /etc/apt/sources.list.d/kubernetes.list

2、更新下载相关工具

sudo apt update && \
sudo apt -y install vim git curl wget kubelet kubeadm kubectl && \
sudo apt-mark hold kubelet kubeadm kubectl

3、查看安装后的版本
kubectl version --client && kubeadm version
4、配置docker的驱动为systemd

所有主机都需要操作

# Create required directories
sudo mkdir -p /etc/systemd/system/docker.service.d
# Create daemon json config file
sudo tee /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
# Start and enable Services
sudo systemctl daemon-reload && \
sudo systemctl restart docker && \
sudo systemctl enable docker

5、通过kubuadmin自动拉取镜像和初始化master服务器
master执行,kubeadm初始化,master上执行

# kubeadm init --image-repository registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16

配置项说明:
--apiserver-advertise-address k8s 中服务apiserver的部署地址,如果不填写,默认是本机
--image-repository 拉取的 docker 镜像源,因为初始化的时候kubeadm会去拉 k8s 的很多组件来进行部署,所以需要指定国内镜像源,下不然会拉取不到镜像
--pod-network-cidr k8s 采用的节点网络,因为我们将要使用flannel作为 k8s 的网络,所以这里填10.244.0.0/16,因为和后面安装calico组件里面有关。所以一定要用这个网段
--kubernetes-version: 这个是用来指定你要部署的 k8s 版本的,一般不用填,不过如果初始化过程中出现了因为版本不对导致的安装错误的话,可以用这个参数手动指定

完整参考
sudo kubeadm init --apiserver-advertise-address=192.168.3.54 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --kubernetes-version=1.22.0
出现以下node加入的提示即为安装成功

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 172.17.0.8:6443 --token dnuaqi.dny5vcoxkfrx7vx3 \
        --discovery-token-ca-cert-hash sha256:b42a002c10624b5cadedc55aa3c2aea92e24d15720ec33ec9662d658b47e67f8 

但是我们在当时如果没记下这个命令,可能后续加节点的时候就忘记了这个命令,此时需要执行如下命令即可

kubeadm token create --print-join-command
配置 kubectl 工具
由于kubeadm默认使用CA证书,所以需要为kubectl配置证书才能访问master.
安装安装成功的提示,非root用户可以将admin.conf配置文件复制到HOME目录的.kube子目录下,命令如下:
master执行

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

如果是root用户,也可以通过设置环境变量KUBECONFIG完成kubectl的配置

export KUBECONFIG=/etc/kubernetes/admin.conf

设置完成后,可以使用kubectl命令行工具对kubernetes集群进行访问和操作了

Node上执行下列命令,复制文件到Node

mkdir -p $HOME/.kube
scp 用户名@192.168.3.54:/home/用户名/.kube/config $HOME/.kube/config

查看已加入的节点

kubectl get nodes

查看集群状态

kubectl get cs

6、master执行,安装网络插件
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

执行完成后需要等一段时间。后台会运行下载和创建容器。

查网络组件运行情况
kubectl get pod --all-namespaces
一直到

7、安装之Dashboard.yaml(直接复制使用)

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
kubectl create -f kubernetes-dashboard.yaml

查看dashboard被k8s分配到了哪一台机器上,IP
kubectl get pods --all-namespaces -o wide
kubectl get services --all-namespaces

补充说明
、单独通过阿里镜像拉取相关K8S镜像文件(如果前面通过kubuadm执行成功就不再需要做这里)
方法1.拉取阿里镜像

kubeadm config print init-defaults > kubeadm.conf
sed -i 's/k8s.gcr.io/registry.aliyuncs.com\/google_containers/g' kubeadm.conf
sudo kubeadm config images list --config kubeadm.conf

root@master01:~# sudo kubeadm config images list --config kubeadm.conf
registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.23.0
registry.aliyuncs.com/google_containers/pause:3.6
registry.aliyuncs.com/google_containers/etcd:3.5.1-0
registry.aliyuncs.com/google_containers/coredns:v1.8.6

sudo kubeadm config images pull --config kubeadm.conf

方法2拉取阿里云镜像

kubeadm config images pull --image-repository=registry.aliyuncs.com/google_containers

修改镜像名字为谷歌镜像名字 前者为阿里云镜像名字 后者为谷歌镜像名字
前者:sudo kubeadm config images list --config kubeadm.conf
后者:sudo kubeadm config images list
这里主要是国内无法访问k8s.gcr.io,而kubuadm执行时如果没有k8s.gcr.io/kube这些镜像会去自动拉取。所以TAG必须改为google名称


docker tag registry.aliyuncs.com/google_containers/kube-apiserver:v1.23.6 k8s.gcr.io/kube-apiserver:v1.23.6 && 
docker tag registry.aliyuncs.com/google_containers/kube-controller-manager:v1.23.6 k8s.gcr.io/kube-controller-manager:v1.23.63 && 
docker tag registry.aliyuncs.com/google_containers/kube-scheduler:v1.23.6 k8s.gcr.io/kube-scheduler:v1.23.6 && 
docker tag registry.aliyuncs.com/google_containers/kube-proxy:v1.23.6 k8s.gcr.io/kube-proxy:v1.23.6 && 
docker tag registry.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6 && 
docker tag registry.aliyuncs.com/google_containers/etcd:3.5.1-0 k8s.gcr.io/etcd:3.5.1-0 && 
docker tag registry.aliyuncs.com/google_containers/coredns:v1.8.6 k8s.gcr.io/coredns/coredns:v1.8.6

测试集群
kubectl get pods -A
kubectl get cs

kubectl get nodes
kubectl create deployment web --image=nginx
kubectl expose deployment web --port=80 --type=NodePort --target-port=80 --name=nginx-web
kubectl get pod,svc

查看日志

journalctl -f -u kubelet
# 删除集群节点
kubectl delete node node3

其它:
让 Master 也当作 Node 使用
kubectl taint node --all node-role.kubernetes.io/master-
将 Master 恢复成 Master Only 状态
kubectl taint node --all node-role.kubernetes.io/master="":NoSchedule

删除命名空间
kb delete deployment jgyw
kb get deplyment,
查询pods
get pods -n ssx-nginx-ns -o wide
查询服务
get svc -n ssx-nginx-ns

posted @ 2022-05-03 22:43  海风IT  阅读(628)  评论(0)    收藏  举报