在 Power Systems 平台上也使用 Kubernetes!

在Power架构上的Linux与x86架构有什么不同吗?

基本上,Power系統和x86系統相同。
但是,顯然在Power系統中無法運行x86的映像,所以需要適應其架構的映像。
只需注意這一點,就可以像使用x86一樣使用。
另外,我們認為使用Power系統的許多人在從Power系統訪問互聯網時需要使用代理,所以在這篇文章中我們想介紹使用代理的步驟。

组成

我在以下环境中尝试了使用kubeadm命令搭建只有一个节点运行的Kubernetes(单主节点集群)。

操作系统:RHEL 7.9 LE
内存:4GB
CPU:2核(POWER8)
存储:50GB

代理设置

首先,在.bashrc或.bash_profile文件中设置以下环境变量。

如果不正确地设置NO_PROXY以访问自己的节点,稍后可能会遇到问题。

export http_proxy="http://10.91.0.1:8080"
export https_proxy="http://10.91.0.1:8080"
export ftp_proxy="http://10.91.0.1:8080"
export proxy="http://10.91.0.1:8080/"
export NO_PROXY="localhost,10.91.XX.XX"
export no_proxy="localhost,10.91.XX.XX"

再次,请将以下设置放入/etc/rhsm/rhsm.conf文件中。

# an http proxy server to use
proxy_hostname = 10.91.0.1

# The scheme to use for the proxy when updating repo definitions, if needed
# e.g. http or https
proxy_scheme = http

# port for http proxy server
proxy_port = 8080

订阅注册

因为需要server-extra和server-optional仓库来引入Docker,所以需要进行订阅注册。

subscription-manager register --username XXXXXX --autosubscribe

然后,启用附加存储库。

subscription-manager repos --enable=rhel-7-server-extras-rpms
subscription-manager repos --enable=rhel-7-server-optional-rpms

将自己的主机添加到/etc/hosts文件中。

为了让自己的主机名能够解析,将自己的主机名添加到hosts文件中预先配置好。

10.91.XX.XX      k8snode

引入Docker

我按照RedHat文档中的说明安装了Docker。

在RHEL 7中获取Docker
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux_atomic_host/7/html-single/getting_started_with_containers/index#getting_docker_in_rhel_7

yum install docker device-mapper-libs device-mapper-event-libs
systemctl start docker.service
systemctl enable docker.service

我們也需要在Docker中設置代理。

mkdir -p /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]
Environment="HTTP_PROXY=http://10.91.0.1:8080/" "HTTPS_PROXY=http://10.91.0.1:8080/" "NO_PROXY=10.91.xx.xx/16"

重新启动Docker守护程序,并使用docker info命令确认代理已设置。

systemctl daemon-reload
systemctl restart docker
docker info

只是现在才说,我会将防火墙暂时停止。
我记错了,但我已将SELinux设置为permissive或disable。

systemctl disable firewalld
systemctl stop firewalld
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

我会禁用swap。

sudo swapoff -a

别忘了编辑 /etc/fstab。

UUID=d06071e3-4760-4d1b-98d3-891566cbf0c3 / ext4 defaults 0 0
#/swap.img      none    swap    sw      0       0

Kubernetes 的实施

添加一个为了引入 Kubernetes 的仓库。

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-ppc64le
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF

我会安装kubelet、kubeadm和kubectl。

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

使用kubeadm进行Kubernetes的配置。
首先,进行dry-run以确认没有错误,然后进行正式配置。
“–pod-network-cidr=”用于指定在Kubernetes集群内使用的CIDR。

kubeadm init --pod-network-cidr=192.168.0.0/16 --dry-run
kubeadm init --pod-network-cidr=192.168.0.0/16

成功后,您将获得以下输出。
这些信息将用于以后访问Kubernetes,因此请务必妥善保存。

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

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

kubeadm join 10.91.133.55:6443 --token 5yu18p.kf9k01j8ndzfbok4 \
    --discovery-token-ca-cert-hash sha256:d6e4c68bcc8347e71d946dbc7992c474c17170ce262cc9fa36b3dc980cd887f1

为了通过admin访问kubernetes,立即复制 ~/.kube/config 文件。

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

最初的状态下,为了防止Pod放置在主节点上,主节点被注入了脏数据,需要解除脏数据。

kubectl get node
kubectl describe node <自ノード>
kubectl taint nodes <自ノード> node-role.kubernetes.io/master:NoSchedule-

我们已经完成了Kubernetes的部署。

安装Calico

当在多个节点上使用时,需要引入CNI。
以下是引入Calico的步骤介绍。

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

文献引用

使用 kubeadm 创建单主节点集群
https://kubernetes.io/zh/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

使用kubeadm创建一个单一的主集群。
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

在本地部署中安装Calico

广告
将在 10 秒后关闭
bannerAds